GuzzleHttp \ Client:Content-Length标头是一个数组,需要整数

时间:2019-11-28 22:11:54

标签: php http-headers guzzle

我已经编写了这段代码:

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}},它应该是一个整数,而不是数组。可以将其存储在字符串中(对我而言)可以。

  1. 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
    
  2. 该数组可以包含多个项目吗?我可以依靠什么?

我将使用getHeaderLine(),但我想确保可以安全地使用它,并理解为什么在期望有整数(即标量)的同时得到数组。

0 个答案:

没有答案