如何在PHP中分析标头

时间:2011-02-03 21:39:35

标签: php api curl header

我正在使用file_get_contents与api进行交互以处理简单的GET请求...但有时它会抛出表示存在错误的标头。如何获取这些标题并确定是否存在问题?

3 个答案:

答案 0 :(得分:5)

Php将在file_get_contents之后设置$ http_response_header,其中包含作为标题行/字符串数组的响应头。如果您想要的只是标题响应(并且可能不应该,某些LAMP堆栈仍然没有cURL),则不必使用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)$ http_response_header仅获取   使用file_get_contents()填充   使用URL而不是本地文件时。   这在说明书中说明了   它提到了HTTP_wrapper。

答案 1 :(得分:4)

使用curl而不是file_get_contents。

请参阅:http://www.php.net/manual/en/curl.examples-basic.php

我想如果你使用REST Api进行通信,那么你的动作就是希望返回Http Status代码。在这种情况下,您可以执行以下操作:

<?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);
?>

答案 2 :(得分:0)

file_get_contents('http://example.com');
var_dump($http_response_header);