Maison  >  Article  >  développement back-end  >  Explication détaillée de plusieurs façons d'envoyer des requêtes HTTP en PHP

Explication détaillée de plusieurs façons d'envoyer des requêtes HTTP en PHP

黄舟
黄舟original
2017-07-26 14:59:283207parcourir

Cet article présente principalement plusieurs manières par lesquelles PHP envoie des requêtes HTTP et trie les manières dont PHP envoie des requêtes HTTP en plus d'utiliser cURL. Ceux qui sont intéressés peuvent en savoir plus.

Dans le développement PHP, nous utilisons souvent cURL pour encapsuler les requêtes HTTP. Qu'est-ce que cURL ?

cURL est un outil utilisé pour transmettre des données et prend en charge plusieurs protocoles. Par exemple, l'utilisation de la ligne de commande curl sous Linux peut envoyer diverses requêtes HTTP. Le cURL de PHP est une bibliothèque de bas niveau qui peut communiquer avec différents serveurs selon différents protocoles, et le protocole HTTP en fait partie.

Un package est souvent utilisé dans le framework de développement PHP moderne, appelé GuzzleHttp. Il s'agit d'un client HTTP et peut également être utilisé pour envoyer diverses requêtes HTTP. Alors, quel est son principe de mise en œuvre ? Il est lié à cURL. Pourquoi ? est-ce différent ?

Guzzle nécessite-t-il cURL ?

No. Guzzle can use any HTTP handler to send requests. This means that Guzzle can be used with cURL, 
PHP's stream wrapper, sockets, and non-blocking libraries like React. You just need to configure an HTTP handler to use a different method of sending requests.

Il s'agit d'une question dans la FAQ du document GuzzleHttp. On peut voir que GuzzleHttp ne s'appuie pas sur la bibliothèque cURL, mais prend en charge une variété de méthodes d'envoi de requêtes HTTP.

Comment PHP envoie des requêtes HTTP

Voici donc un résumé de la manière dont PHP envoie des requêtes HTTP en plus d'utiliser cURL.

1.cURL

Méthode 2.stream

stream_context_create Fonction : Créer et renvoyer un texte Données de flux et appliquez diverses options, qui peuvent être utilisées pour les paramètres de délai d'attente des processus tels que fopen(), file_get_contents(), les serveurs proxy, les méthodes de requête et les processus spéciaux pour les paramètres des informations d'en-tête.

Prenons comme exemple une requête POST :

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;
}

3. Méthode socket

Utilisez socket pour établir une connexion, épissez les paquets HTTP pour envoyer des données pour la requête HTTP.

Un exemple de méthode GET :

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);
}
?>

Cet article présente comment envoyer du HTTP demandes Plusieurs manières différentes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn