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

PHP で HTTP リクエストを送信するいくつかの方法を共有する

小云云
小云云オリジナル
2018-02-01 13:03:484019ブラウズ

PHP 開発では、HTTP リクエストをカプセル化するために cURL をよく使用します。 cURL とは何ですか? cURL はデータを送信するために使用されるツールであり、複数のプロトコルをサポートしています。たとえば、Linux でcurl コマンド ラインを使用すると、さまざまな HTTP リクエストを送信できます。 PHP の cURL は、さまざまなプロトコルに従ってさまざまなサーバーと通信できる低レベルのライブラリであり、HTTP プロトコルもその 1 つです。この記事では、cURL の使用に加えて、PHP が HTTP リクエストを送信するいくつかの方法を主に紹介します。興味のある方は詳細をご覧ください。皆さんのお役に立てれば幸いです。

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

Guzzle には cURL が必要ですか?

いいえ、Guzzle はリクエストを送信するために任意の HTTP ハンドラーを使用できます。つまり、Guzzle は cURL、PHP のストリーム ラッパー、ソケット、および React のような非ブロッキング ライブラリで使用できます。別のリクエスト送信方法を使用するように HTTP ハンドラーを設定します。

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

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

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

1.cURL

詳細なメソッド: http://www.jb51.net/article/56492.htm

2.streamストリームメソッド

stream_context_create 機能: テキストデータストリームを作成して返すfopen()、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;
}

PHPストリームに関する紹介記事: http://www.jb51.net/article/68891.htm

3.socketメソッド

ソケットを使用して接続を確立し、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がhttpリクエストを通じて配列を送信する方法の例の共有

WeChatのhttpリクエストのカプセル化の詳細な説明とサンプルコードアプレット

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

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