首页 > 后端开发 > php教程 > 如何使用'file_get_contents”和'stream_context_create”处理 HTTP 错误并检索响应代码?

如何使用'file_get_contents”和'stream_context_create”处理 HTTP 错误并检索响应代码?

Linda Hamilton
发布: 2024-12-02 08:17:10
原创
689 人浏览过

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。此问题引起两个问题:

  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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板