带有 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。此问题引起两个问题:
抑制警告
要抑制警告,我们可以利用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中文网其他相关文章!