PHP:如何发送GET请求并获取页面的内容和HTTP错误代码
PHP:如何发送GET请求并获取页面的内容和HTTP错误代码
我想知道在出现错误的情况下,是否可以获取到HTTP错误代码和响应,而不是返回false(file_get_contents错误)和抛出错误。我正在使用PHP 7.2的file_get_contents函数。\n我已经尝试过以下方法:\n$r = file_get_contents(\"https://somewebsite\");
\n输出:\nPHP警告:file_get_contents(https://somewebsite):无法打开流:HTTP请求失败!HTTP/1.0 400 Bad Request
\n我可以通过$http_response_header获取响应代码,但$r是false,我想获取错误响应页面。
在PHP中,要发送GET请求并获取页面的内容和HTTP错误代码,可以使用file_get_contents函数和stream_context_create函数。下面是一个示例代码:
$context = stream_context_create(array( 'http' => array('ignore_errors' => true), )); $result = file_get_contents('http://your/url', false, $context);
上述代码中,首先使用stream_context_create函数创建了一个上下文流(stream context),并设置了http选项的ignore_errors为true,以忽略HTTP请求中的错误。然后,使用file_get_contents函数发送GET请求,并通过上下文流参数传递了上下文流。最后,将请求结果保存在$result变量中。
这样就可以通过GET请求获取页面的内容和HTTP错误代码了。
问题的出现原因是:使用PHP进行GET请求页面并获取页面内容和HTTP错误代码时,直接使用file_get_contents函数无法获取HTTP错误代码。
解决方法是:使用curl库进行GET请求,通过设置选项来获取页面内容和HTTP错误代码。具体步骤如下:
1. 初始化curl会话:$ch = curl_init('https://httpstat.us/404');
2. 设置选项:curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
设置返回结果为字符串;
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
设置允许重定向;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
设置禁用证书验证;
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
设置禁用主机验证。
3. 执行请求:$response = curl_exec($ch);
4. 获取HTTP错误代码:$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
5. 判断HTTP错误代码是否大于等于400,如果是则表示发生错误,否则表示请求成功。
6. 根据判断结果进行相应的处理。
最后,关闭curl会话:curl_close($ch);
。