【发布时间】:2015-10-09 16:45:45
【问题描述】:
我有 URL (http://forexample.com/index),我在其中发送原始标头:
header("HTTP/1.1 401 Some message");
我想通过 Guzzle 获取此原始标题消息。不幸的是,请求完成后,我在标头之间找不到此消息:
$client = new GuzzleHttp\Client();
try {
$res = $client->post( 'http://forexample.com/index' );
} catch ( GuzzleHttp\Exception\BadResponseException $e ) {
// On HTTP response other than 200 Guzzle throws an exception
$res = $e->getResponse();
}
var_dump( $res->getHeaders() );
假设我用原生 PHP 函数 get_headers 调用这个 URL:
var_dump( get_headers( 'http://forexample.com/index' ) );
我得到了所有的标题。那么有什么想法吗?
【问题讨论】:
-
不是你要的HTTP状态码吗?
-
不,我想得到状态消息 - “一些消息”。
-
那么你在
$res->getReasonPhrase()之后。但是,如果您有状态代码,则绝对不需要原因短语。你不应该依赖这个短语,只依赖状态代码,但你的代码就是你的代码,你做你认为合适的事情。祝你好运。 -
getReasonPhrase返回“未授权”消息,该消息实际上与响应代码有关。但我需要收到“一些消息”消息:) -
这让我们回到我原来的评论 - 你在状态码之后是,但问题是你还不知道。查看 Guzzle Response 的来源,似乎必须将任意人类可读的消息传递给它 - 如果没有通过构造函数选项传递任何内容,那么它会使用状态码提取消息。我知道您想要人类可读的短语,但似乎用于处理响应的默认类不会给出远程服务返回的类,而是与带有状态代码的地图对应的类。