Php Guzzle返回流空体而不是json体
当我使用Postman进行API调用时,我收到一个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())
$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@MaksimIvanovjson_decode
预期第一个参数为stringgetBody()
不返回字符串。