我有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' ) );
我得到了所有标题。那么任何想法?
答案 0 :(得分:2)
Guzzle已为各种代码预定义状态消息。 See here
因此,您的邮件将被基于已发送代码的邮件替换。并且可以通过
获取默认消息$res->getReasonPhrase();
<强>更新强>
我知道为什么我们没有得到&#34;有些消息&#34;具有$res->getReasonPhrase();
功能。问题(?)位于第76行的here上。
isset($startLine[2]) ? (int) $startLine[2] : null
在上面的行中,$startLine[2]
是您在标头中提供的'Some message'
,但由于int
投放,会产生0
并由于以下代码if (!$reason && isset(self::$phrases[$this->statusCode])) {
$this->reasonPhrase = self::$phrases[$status];
} else {
$this->reasonPhrase = (string) $reason;
}
3}}被默认消息替换。
int
我确信int
广告投放背后必定有一些原因,但我已将string
替换为int
以创建here只是为了知道背后是否有任何原因它。我希望他们拒绝我的拉动请求并告诉我为什么我错了,datetime.date
铸造确实是正确的。
<强>更新强>
Pull请求已被接受并已合并到master中。所以在将来的版本中,这个bug就已经修复了。