PHP:如何发送GET请求并获取页面的内容和HTTP错误代码

13 浏览
0 Comments

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,我想获取错误响应页面。

0
0 Comments

在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错误代码了。

0
0 Comments

问题的出现原因是:使用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);

0