我已经编写了这段代码:
use GuzzleHttp\Client;
$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'https://adresse.data.gouv.fr/data/',
// You can set any number of default request options.
'timeout' => 2.0,
]);
$response = $client->request('HEAD', 'ban/adresses-odbl/latest/csv/adresses-france.csv.gz');
$length = $response->getHeader('Content-Length');
看来$length
是一个数组:
var_dump($length);
array(1) {
[0] =>
string(9) "616925565"
}
所以它是一个整数,以字符串形式存储在数组中。根据{{3}},它应该是一个整数,而不是数组。可以将其存储在字符串中(对我而言)可以。
GuzzleHttp \ Client是否正常?它是否不符合HTTP规范,特别是因为响应是一条HTTP/1.1 specs消息?
本文档介绍了用于表示HTTP消息的通用接口,如RFC 7230和RFC 7231中所述
我知道有一种$response->getHeaderLine()
方法,但是根据PSR-7:
$message = $message ->withHeader('foo', 'bar') ->withAddedHeader('foo', 'baz'); $header = $message->getHeaderLine('foo'); // $header contains: 'bar, baz'
请注意,使用curl将按预期返回标量:
curl -I https://adresse.data.gouv.fr/data/ban/adresses-odbl/latest/csv/adresses-france.csv.gz --http1.1
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Thu, 28 Nov 2019 22:09:32 GMT
Content-Type: application/octet-stream
Content-Length: 616925565
Last-Modified: Mon, 25 Nov 2019 17:14:41 GMT
Connection: keep-alive
ETag: "5ddc0c01-24c5897d"
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With,Content-Type
Accept-Ranges: bytes
该数组可以包含多个项目吗?我可以依靠什么?
我将使用getHeaderLine()
,但我想确保可以安全地使用它,并理解为什么在期望有整数(即标量)的同时得到数组。