我正在使用file_get_contents
与简单GET
请求的api进行交互……但是,有时它会抛出标头,表示出现了错误。如何获取这些标头并确定是否存在问题?
发布于 2011-02-04 05:41:18
使用curl而不是file_get_contents。
请参阅:http://www.php.net/manual/en/curl.examples-basic.php
我想,如果你与一个REST Api通信,那么你实际上想要返回Http状态码。在这种情况下,您可以这样做:
<?php
$ch = curl_init("http://www.example.com/api/users/1");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == 501) {
echo 'Ops it not implemented';
}
fclose($fp);
?>
发布于 2011-02-04 05:43:47
Php将在file_get_contents
之后设置$http_response_header,它包含以标题行/字符串数组形式的响应头。如果你想要的只是报头响应,那么就没有必要使用curl (也许不应该,一些LAMP堆栈仍然没有cURL)。
$http_response_header上的文档: http://php.net/manual/en/reserved.variables.httpresponseheader.php
示例:
file_get_contents('http://stacksocks.com');
foreach ($http_response_header as $header)
{
echo $header . "<br>\n";
}
在评论中摘自帖子的提示:
1)该值随每个请求的变化而变化。
2)在方法/函数中使用时,必须将当前值传递给方法/函数。在没有通过函数/方法参数赋值的情况下直接在方法/函数中使用$http_response_header将导致错误消息:注意:未定义变量: http_response_header
3)数组的长度和值在数组中的位置可能会根据被查询的服务器和收到的响应而变化。我不确定数组中是否有任何“绝对”值位置。
4)只有在使用URL而不是本地文件时,才使用file_get_contents()来填充$http_response_header。当它提到HTTP_wrapper时,这是在描述中陈述的。
发布于 2011-02-04 05:45:31
file_get_contents('http://example.com');
var_dump($http_response_header);
https://stackoverflow.com/questions/4892044
复制相似问题