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

巴扎黑
リリース: 2023-03-15 14:30:01
オリジナル
1628 人が閲覧しました

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

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

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

パッケージは、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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート