PHP は、Web 開発で一般的に使用されるスクリプト言語です。 Web 開発では、HTTP プロトコルは重要なコンポーネントです。 PHP 開発者にとって、HTTP リクエストの送信方法と HTTP レスポンスの処理方法を知ることは、必要なスキルの 1 つです。この記事では、PHP での HTTP リクエストとレスポンスの処理について説明します。
PHP では、curl または file_get_contents を使用して HTTP リクエストを送信できます。
1.1curl
curl はデータを送信するためのオープンソース ツールであり、複数のプロトコルをサポートしています。 PHP では、curl ライブラリを使用して HTTP リクエストを送信できます。以下は、curl が HTTP GET リクエストを送信する例です。
$url = 'http://example.com/api/get_user_info?user_id=123'; // 请求地址 $ch = curl_init(); // 初始化curl对象 curl_setopt($ch, CURLOPT_URL, $url); // 设置请求地址 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 执行curl_exec后不直接输出结果,而是返回给变量 curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时时间为10秒 $result = curl_exec($ch); // 执行请求,获取结果 curl_close($ch); // 关闭curl对象
上記のコードでは、curl_init() を通じてcurl オブジェクトが作成され、リクエスト アドレスやタイムアウト時間などのパラメータが設定され、最後にcurl_exec () はリクエストの送信と結果の取得に使用されます。 POST リクエストを送信する必要がある場合は、CURLOPT_POST パラメータを設定し、POST リクエストのパラメータを渡すように CURLOPT_POSTFIELDS パラメータを設定する必要があります。
1.2 file_get_contents
file_get_contentsは、PHPが提供する、指定したファイルの内容を取得できる関数です。指定したファイルが URL の場合、この関数を使用して HTTP リクエストを送信できます。以下は、file_get_contents が HTTP GET リクエストを送信する例です。
$url = 'http://example.com/api/get_user_info?user_id=123'; // 请求地址 $context = stream_context_create(array('http' => array('timeout' => 10))); // 设置请求超时时间为10秒 $response = file_get_contents($url, false, $context); // 发送请求,获取结果
上記のコードでは、HTTP リクエストのタイムアウトを設定する stream_context_create() 関数を通じてコンテキスト ストリームが作成されます。次に、file_get_contents() 関数を使用して HTTP リクエストを送信し、応答結果を取得します。
HTTP 要求を送信した後、応答を処理する必要があります。 HTTP 応答には、応答ヘッダーと応答本文の 2 つの部分が含まれます。応答ヘッダーには、応答コード、応答時間、応答タイプなど、サーバーから返されるいくつかのメタデータ情報が含まれています。応答本文は、特定の返されるコンテンツです。
2.1 応答ヘッダーの処理
PHP では、get_headers() 関数を使用して HTTP 応答ヘッダーを取得できます。以下は、get_headers() 関数を使用して応答ヘッダーを取得する例です。
$url = "http://example.com"; // 请求地址 $headers = get_headers($url, 1); // 获取HTTP响应头 print_r($headers); // 输出响应头
上記のコードでは、get_headers() 関数を使用して、要求アドレスの HTTP 応答ヘッダーを取得し、結果は変数 $headers となり、変数 が出力されます。
2.2 応答本文の処理
PHP では、curl 関数または file_get_contents 関数を使用して HTTP 応答本文を取得できます。
2.2.1curl
curl を使用して HTTP 応答本文を取得するプロセスは、HTTP リクエストを送信するプロセスと似ており、CURLOPT_RETURNTRANSFER パラメータを 1 に設定するだけです。以下は、curl を使用して HTTP 応答本文を取得する例です。
$url = 'http://example.com/'; // 请求地址 $ch = curl_init(); // 初始化curl对象 curl_setopt($ch, CURLOPT_URL, $url); // 设置请求地址 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 执行curl_exec后不直接输出结果,而是返回给变量 curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时时间为10秒 $response = curl_exec($ch); // 执行请求,获取结果 curl_close($ch); // 关闭curl对象
上記のコードでは、curl を使用してリクエスト アドレスの HTTP 応答本文を取得し、結果は変数 $ に格納されます。応答。
2.2.2 file_get_contents
file_get_contents 関数を使用して HTTP 応答本文を取得する方法は、HTTP リクエストを送信する方法と似ており、リクエスト アドレスを直接アドレスとして使用するだけで済みます。関数のパラメータ。以下は、file_get_contents 関数を使用して HTTP 応答本文を取得する例です。
$url = 'http://example.com/'; // 请求地址 $context = stream_context_create(array('http' => array('timeout' => 10))); // 设置请求超时时间为10秒 $response = file_get_contents($url, false, $context); // 发送请求,获取结果
上記のコードでは、file_get_contents() 関数を使用して、リクエスト アドレスの HTTP 応答本文とその結果を取得します。変数 $response に格納されます。
概要:
HTTP プロトコルは Web 開発の重要な部分です。 PHP では、curl 関数または file_get_contents 関数を使用して、HTTP リクエストを送信し、応答結果を取得できます。 HTTP 応答結果が取得されたら、get_headers() 関数を使用して応答ヘッダーを取得し、curl または file_get_contents 関数を使用して応答本文を取得できます。 HTTP リクエストとレスポンスの処理に習熟することは、PHP 開発に必要なスキルです。
以上がPHP での HTTP リクエストとレスポンスの処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。