ホームページ  >  記事  >  バックエンド開発  >  PHP で HTTP リクエストを送信するいくつかの方法の詳細な説明

PHP で HTTP リクエストを送信するいくつかの方法の詳細な説明

黄舟
黄舟オリジナル
2017-07-26 14:59:283208ブラウズ

この記事では主に、PHP が HTTP リクエストを送信するいくつかの方法を紹介し、cURL を使用する以外に PHP が HTTP リクエストを送信する方法を整理します。興味のある方は詳細をご覧ください。

PHP 開発では、HTTP リクエストをカプセル化するために cURL をよく使用します。 cURL とは何ですか?

cURL はデータを送信するために使用されるツールであり、複数のプロトコルをサポートしています。たとえば、Linux で Curl コマンド ラインを使用すると、さまざまな HTTP リクエストを送信できます。 PHP の cURL は、さまざまなプロトコルに従ってさまざまなサーバーと通信できる低レベルのライブラリであり、HTTP プロトコルもその 1 つです。

パッケージは、GuzzleHttp と呼ばれる最新の PHP 開発フレームワークでよく使用されます。これは HTTP クライアントであり、さまざまな HTTP リクエストの送信にも使用できます。では、その実装原理は何で、cURL とどう違うのでしょうか?

Does Guzzle require 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.

これは GuzzleHttp ドキュメント FAQ の質問です。GuzzleHttp は cURL ライブラリに依存していませんが、HTTP リクエストを送信する複数の方法をサポートしていることがわかります。

PHP が HTTP リクエストを送信する方法

それでは、cURL を使用する以外に PHP が HTTP リクエストを送信する方法の概要を以下に示します。

1.cURL

2.ストリームストリーミングメソッド

stream_context_create 関数: テキストデータストリームを作成して返し、fopen()、file_get_contents()、および file_get_contents() のタイムアウト設定に使用できるさまざまなオプションを適用します。その他の処理、プロキシサーバー、リクエストメソッド、ヘッダ情報設定の特殊処理。

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. ソケットメソッド

ソケットを使用して接続を確立し、HTTP メッセージを結合して HTTP リクエストのデータを送信します。

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

この記事では、HTTP リクエストを送信するいくつかの異なる方法を紹介します。

以上がPHP で HTTP リクエストを送信するいくつかの方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。