编程语言
首页 > 编程语言> > php – Guzzle返回流空体而不是json体

php – Guzzle返回流空体而不是json体

作者:互联网

当我使用Postman进行API调用时,我会收到一个JSON对象..这就是我所期望的

但是,当我像Guzzle一样打电话时:

$client = new \GuzzleHttp\Client(['base_uri' => 'https://api.dev/']);

$response = $client->request('GET', 'search', [
    'verify' => false,
]);

var_dump($response->getBody()); //null

var_dump($response); //returns below

我从Guzzle下面转储

Response {#304 ▼
  -reasonPhrase: "OK"
  -statusCode: 200
  -headers: array:8 [▼
    "Server" => array:1 [▶]
    "Content-Type" => array:1 [▼
      0 => "application/json"
    ]
    "Transfer-Encoding" => array:1 [▶]
    "Connection" => array:1 [▶]
    "Cache-Control" => array:1 [▶]
    "Date" => array:1 [▶]
    "X-RateLimit-Limit" => array:1 [▶]
    "X-RateLimit-Remaining" => array:1 [▶]
  ]
  -headerNames: array:8 [▼
    "server" => "Server"
    "content-type" => "Content-Type"
    "transfer-encoding" => "Transfer-Encoding"
    "connection" => "Connection"
    "cache-control" => "Cache-Control"
    "date" => "Date"
    "x-ratelimit-limit" => "X-RateLimit-Limit"
    "x-ratelimit-remaining" => "X-RateLimit-Remaining"
  ]
  -protocol: "1.1"
  -stream: Stream {#302 ▼
    -stream: stream resource @15 ▼
      wrapper_type: "PHP"
      stream_type: "TEMP"
      mode: "w+b"
      unread_bytes: 0
      seekable: true
      uri: "php://temp"
      options: []
    }
    -size: null
    -seekable: true
    -readable: true
    -writable: true
    -uri: "php://temp"
    -customMetadata: []
  }
}

解决方法:

getBody()返回一个流.如果你想一次获得所有的内容,你可以使用getContents()方法并解码json(如果你需要)

$payload = json_decode($response->getBody()->getContents());

进一步阅读 – Guzzle Responses

标签:php,laravel,guzzlehttp
来源: https://codeday.me/bug/20190717/1486930.html