Heim >Backend-Entwicklung >PHP-Tutorial >Teilen Sie verschiedene Möglichkeiten zum Senden von HTTP-Anfragen in PHP

Teilen Sie verschiedene Möglichkeiten zum Senden von HTTP-Anfragen in PHP

小云云
小云云Original
2018-02-01 13:03:484126Durchsuche

In der PHP-Entwicklung verwenden wir häufig cURL, um HTTP-Anfragen zu kapseln. Was ist cURL? cURL ist ein Tool zum Übertragen von Daten und unterstützt mehrere Protokolle. Mithilfe der Curl-Befehlszeile unter Linux können beispielsweise verschiedene HTTP-Anfragen gesendet werden. cURL von PHP ist eine Low-Level-Bibliothek, die über verschiedene Protokolle mit verschiedenen Servern kommunizieren kann, und das HTTP-Protokoll ist eines davon. In diesem Artikel werden hauptsächlich verschiedene Möglichkeiten für PHP zum Senden von HTTP-Anfragen vorgestellt. Neben der Verwendung von cURL kann PHP auch HTTP-Anfragen senden. Ich hoffe, es hilft allen.

Im modernen PHP-Entwicklungsframework wird häufig ein Paket namens GuzzleHttp verwendet. Es ist ein HTTP-Client und kann auch zum Senden verschiedener HTTP-Anfragen verwendet werden. Warum hängt es mit cURL zusammen? ist es anders?

Benötigt Guzzle cURL?

Nein. Guzzle kann jeden HTTP-Handler zum Senden von Anfragen verwenden. Dies bedeutet, dass Guzzle mit cURL, dem Stream-Wrapper, Sockets verwendet werden kann und nicht blockierende Bibliotheken wie React. Sie müssen lediglich einen HTTP-Handler konfigurieren, um eine andere Methode zum Senden von Anforderungen zu verwenden.

Dies ist eine Frage in den häufig gestellten Fragen zur GuzzleHttp-Dokumentation. Es ist ersichtlich, dass GuzzleHttp dies nicht tut Verlassen Sie sich auf die cURL-Bibliothek und unterstützen Sie mehrere Möglichkeiten zum Senden von HTTP-Anfragen.

Wie PHP HTTP-Anfragen sendet

Hier finden Sie eine Zusammenfassung der Arten, wie PHP neben der Verwendung von cURL HTTP-Anfragen sendet.

1.cURL

Detaillierte Methode: http://www.jb51.net/article/56492.htm

2. Stream-Methode

stream_context_create Funktion: Erstellen Sie einen Textdatenstrom, geben Sie ihn zurück und wenden Sie verschiedene Optionen an, die für Timeout-Einstellungen, Proxyserver, Anforderungsmethoden usw. in fopen(), file_get_contents() verwendet werden können und andere Prozesse. Ein spezieller Prozess zum Festlegen von Header-Informationen.

Nehmen Sie eine POST-Anfrage als Beispiel:

PHP


<?php
/**
 * Created by PhpStorm.
 * User: tanteng
 * Date: 2017/7/22
 * Time: 13:48
 */
function post($url, $data)
{
  $postdata = http_build_query(
    $data
  );

  $opts = array(&#39;http&#39; =>
           array(
             &#39;method&#39; => &#39;POST&#39;,
             &#39;header&#39; => &#39;Content-type: application/x-www-form-urlencoded&#39;,
             &#39;content&#39; => $postdata
           )
  );
  $context = stream_context_create($opts);
  $result = file_get_contents($url, false, $context);
  return $result;
}

Einführungsartikel über PHP-Stream :http://www.jb51.net/article/68891.htm

3.socket-Methode

Verwenden Sie einen Socket, um eine Verbindung herzustellen und HTTP-Nachrichten zu verbinden send Eine HTTP-Anfrage für Daten stellen.

Ein Beispiel für die GET-Methode:

PHP


<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
  echo "$errstr ($errno)<br />\n";
} else {
  $out = "GET / HTTP/1.1\r\n";
  $out .= "Host: www.example.com\r\n";
  $out .= "Connection: Close\r\n\r\n";
  fwrite($fp, $out);
  while (!feof($fp)) {
    echo fgets($fp, 128);
  }
  fclose($fp);
}
?>

In diesem Artikel wird beschrieben, wie HTTP gesendet wird Anfragen auf verschiedene Arten.

Verwandte Empfehlungen:

Detaillierte Erklärung, wie PHP Socket zum Senden von HTTP-Anfragen verwendet

So senden Sie PHP über http-Anfragen Array-Beispielfreigabe

Detaillierte Erklärung und Beispielcode der HTTP-Anfragekapselung des WeChat-Applets

Das obige ist der detaillierte Inhalt vonTeilen Sie verschiedene Möglichkeiten zum Senden von HTTP-Anfragen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn