ホームページ >バックエンド開発 >PHPチュートリアル >「file_get_contents」と「stream_context_create」を使用して HTTP エラーを処理し、応答コードを取得する方法

「file_get_contents」と「stream_context_create」を使用して HTTP エラーを処理し、応答コードを取得する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-02 08:17:10681ブラウズ

How to Handle HTTP Errors and Retrieve Response Codes with `file_get_contents` and `stream_context_create`?

file_get_contents および stream_context_create を使用した HTTP 応答コード

POST リクエストを行うには、file_get_contents を stream_context_create と組み合わせて利用できます。ただし、HTTP エラーが発生すると警告が表示される場合があります。この記事では、この問題に対処し、警告の抑制とストリームからの応答コードの取得の両方の解決策を提供します。

まず、次のシナリオを検討してください。

$options = ['http' => [
    'method' => 'POST',
    'content' => $data,
    'header' => 
        "Content-Type: text/plain\r\n" .
        "Content-Length: " . strlen($data) . "\r\n",
]];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);

このコードは POST リクエストを処理します。ただし、HTTP エラーが発生した場合は、次の警告が表示されます。

file_get_contents(...): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

さらに、false が返されます。この問題から 2 つの懸念が生じます:

  1. 警告が表示されないようにすることはできますか?
  2. ストリームからエラーの詳細、特に応答コードを取得することは可能ですか?

警告の抑制

警告を抑制するには、次のことができます。 stream_context_create() 内のignore_errors オプションを利用します:

$context = stream_context_create(['http' => ['ignore_errors' => true]]);

この変更により、警告は表示されなくなります。

応答コードの取得

ストリームから応答コードを取得するには、http_response_header を検査します。変数:

$context = stream_context_create(['http' => ['ignore_errors' => true]]);
$result = file_get_contents("http://example.com", false, $context);
var_dump($http_response_header);

このコードは、応答コードを含む応答ヘッダーを含む配列を表示します。

以上が「file_get_contents」と「stream_context_create」を使用して HTTP エラーを処理し、応答コードを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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