PHP8.0 の HTTP クライアント ライブラリ
PHP8.0 のリリースでは、多くの新機能と改善がもたらされました。最も目を引くのは、組み込みの HTTP クライアント ライブラリの追加です。このライブラリは、HTTP リクエストを送信し、返された応答を処理する簡単な方法を提供します。この記事では、このライブラリの主な機能と使用法について説明します。
HTTP リクエストの送信
PHP8.0 の組み込み HTTP クライアント ライブラリを使用して HTTP リクエストを送信するのは非常に簡単です。この例では、GET メソッドを使用して、この Web サイトのホームページを取得します。
use HttpClientExceptionHttpException; use HttpClientHttpClient; use HttpMessageRequestFactory; use HttpMessageStreamFactory; require_once "vendor/autoload.php"; // Create the client $httpClient = HttpClientDiscovery::find(); // Create the request $requestFactory = new RequestFactory(); $request = $requestFactory->createRequest( 'GET', 'http://example.com' ); // Send the request and wait for the response try { $response = $httpClient->sendRequest($request); } catch (HttpException $e) { echo 'Error: ' . $e->getMessage(); exit; } // Print the response body $body = (string) $response->getBody(); echo $body;
この例では、最初にファクトリ クラス メソッド HttpClientDiscovery::find()
を使用して、 HTTP クライアント。次に、RequestFactory::createRequest()
メソッドを使用して、リクエスト メソッドとリクエスト URL を指定して HTTP リクエストを作成します。最後に、HttpClient::sendRequest()
メソッドを使用してリクエストを送信し、応答を待ちます。リクエストの送信に失敗した場合は、HttpException
例外がスローされます。
応答の処理
応答を受信した後、HTTP 応答オブジェクトを使用して、応答ステータス、応答ヘッダー、および応答本文にアクセスできます。以下のコードでは、応答ステータス、応答ヘッダー、および応答本文を表す文字列を出力します。
use HttpMessageResponseFactory; $responseFactory = new ResponseFactory(); $status = $response->getStatusCode(); $headers = $response->getHeaders(); $body = (string) $response->getBody(); $responseString = sprintf( "HTTP/%s %s %s %s", $response->getProtocolVersion(), $status, implode(" ", $headers), $body ); echo $responseString;
ここでは、ResponseFactory::createResponse()
メソッドを使用して HTTP 応答オブジェクトを作成します。次に、ResponseInterface
インターフェイスによって提供されるメソッドを使用して、応答ステータス、応答ヘッダー、および応答本文にアクセスします。最後に、応答を文字列に結合し、画面に表示します。
応答本文の処理
HTTP リクエストを送信し、サーバーから応答を受信したときに、応答本文を処理することもできます。 JSON 応答本文を処理する方法を見てみましょう。
use HttpMessageJsonResponseFactory; $responseFactory = new JsonResponseFactory(); $decoded = $responseFactory->createResponse($response)->getPayload(); echo 'The decoded response is:' . PHP_EOL; print_r($decoded);
この例では、JsonResponseFactory::createResponse()
メソッドを使用して、JSON 形式の HTTP 応答オブジェクトを作成します。次に、JsonResponseInterface
インターフェイスによって提供される getPayload()
メソッドを使用して、JSON 応答本文をデコードします。最後に、デコードされた応答本文をコンソールに出力します。
例外の処理
HTTP クライアント ライブラリを使用する場合、ネットワーク接続エラーやサーバー障害が原因でリクエストが失敗することがあります。これが発生すると、HTTP クライアント ライブラリは HttpException
例外をスローします。次のコード スニペットでは、この例外をキャッチし、エラー メッセージを出力します。
use HttpClientExceptionHttpException; // ... try { $response = $httpClient->sendRequest($request); } catch (HttpException $e) { echo 'Error: ' . $e->getMessage(); exit; }
例外が発生すると、エラー メッセージが表示され、プログラムが終了します。これにより、リクエストが失敗した場合に、エラー メッセージの出力やリクエストの再試行など、適切なアクションを実行できるようになります。
結論
HTTP クライアント ライブラリは、PHP8.0 の重要な新機能です。これは、HTTP リクエストを送信し、応答を処理するための強力な方法を提供します。この記事では、HTTP リクエストの送信、応答の処理、応答本文の処理、例外の処理など、HTTP クライアント ライブラリの主な機能と使用法を紹介しました。これで、PHP アプリケーションで HTTP クライアント ライブラリを使用できるようになりました。
以上がPHP8.0のHTTPクライアントライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。