Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Art und Weise, wie PHP HTTP-Anfragen sendet

Einführung in die Art und Weise, wie PHP HTTP-Anfragen sendet

巴扎黑
巴扎黑Original
2017-08-23 11:15:291622Durchsuche

In diesem Artikel werden hauptsächlich verschiedene Arten des Sendens von HTTP-Anfragen durch PHP vorgestellt und erläutert, wie PHP zusätzlich zur Verwendung von cURL HTTP-Anfragen sendet. Interessierte können mehr darüber erfahren.

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. Sie können beispielsweise die Curl-Befehlszeile unter Linux verwenden, um verschiedene HTTP-Anfragen zu senden. cURL von PHP ist eine Low-Level-Bibliothek, die über verschiedene Protokolle mit verschiedenen Servern kommunizieren kann, und das HTTP-Protokoll ist eines davon.

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? 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.

Das obige ist der detaillierte Inhalt vonEinführung in die Art und Weise, wie PHP HTTP-Anfragen sendet. 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