Php Guzzle返回流空体而不是json体

Php Guzzle返回流空体而不是json体,php,laravel,guzzlehttp,Php,Laravel,Guzzlehttp,当我使用Postman进行API调用时,我收到一个JSON对象,这正是我所期望的 然而,当我像这样狂饮着打同样的电话时: $client = new \GuzzleHttp\Client(['base_uri' => 'https://api.dev/']); $response = $client->request('GET', 'search', [ 'verify' => false, ]); var_dump($response->getBody())

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

然而,当我像这样狂饮着打同样的电话时:

$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
我喝得酩酊大醉

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());

进一步阅读-

如果
$response->getBody()->getContents()
不适合您,请尝试:

$response->getBody()->__toString();

如前所述,有时
getContents
的流指针已经位于流的末尾,然后返回空响应,但是
\uuu toString
默认情况下会重置它。

将主体转换为字符串时会得到相同的响应吗<代码>变量转储((字符串)$response->getBody())Does
$response->json()存在吗?不确定您使用的是哪个版本。在使用postman时,您会发送哪些邮件头?(其中8个)。使用版本6的Iam,$response->json()不存在我为object not found或guzzle为null找到的最佳答案,感谢答案可以简化为
json\u decode($response->getBody())
json_decode()
将主体强制转换为
string
,这与调用
getContents()
@MaksimIvanov()的效果相同。不,它不会将主体强制转换为
string
@EmreAydin@MaksimIvanov
json_decode
预期第一个参数为string
getBody()
不返回字符串。