首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PHP中分析报头

如何在PHP中分析报头
EN

Stack Overflow用户
提问于 2011-02-04 05:39:35
回答 3查看 4K关注 0票数 1

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-04 05:41:18

使用curl而不是file_get_contents。

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

我想,如果你与一个REST Api通信,那么你实际上想要返回Http状态码。在这种情况下,您可以这样做:

代码语言:javascript
运行
复制
<?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);
?>
票数 4
EN

Stack Overflow用户

发布于 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

示例:

代码语言:javascript
运行
复制
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时,这是在描述中陈述的。

票数 5
EN

Stack Overflow用户

发布于 2011-02-04 05:45:31

代码语言:javascript
运行
复制
file_get_contents('http://example.com');
var_dump($http_response_header);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4892044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档