我正在使用Guzzle使返回JSON的异步请求。调用工作正常,响应正常,但是:
$client = new Client();
$promise = $client->requestAsync($requestType ,$this->url.$resource, // endpoint
[
'auth' => [ // credentials
$this->username,
$this->password
],
'json' => $payload, // the package
'curl' => [ // some curl options
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_RETURNTRANSFER => true,
],
'headers' => [ // custom headers
'Accept' => 'application/json',
'Content-Type' => 'application/json'
]
]
);
$response = $promise->wait();
echo $response->getStatusCode().'<br /><br />';
// Error handling
if($response->getStatusCode() != 200){
// Error Handling
}else{
echo $response->getBody(true);
}
如果我回显response->getBody(),我看到JSON字符串,但如果我把它分配给一个属性,print_r,或返回它,我得到:
GuzzleHttp'Psr7'Stream Object ( [stream:GuzzleHttp'Psr7'Stream:private] => Resource id #245 [size:GuzzleHttp'Psr7'Stream:private] => [seekable:GuzzleHttp'Psr7'Stream:private] => 1 [readable:GuzzleHttp'Psr7'Stream:private] => 1 [writable:GuzzleHttp'Psr7'Stream:private] => 1 [uri:GuzzleHttp'Psr7'Stream:private] => php://temp [customMetadata:GuzzleHttp'Psr7'Stream:private] => Array ( ) )
我需要使用JSON来验证来自服务的响应。我该怎么做呢?我已经通读了文档,但是我明显遗漏了什么吗?
基本上沿着分配json getBody输出的行说$json:
if($json->first_field > 0)
感谢任何帮助。关于
在对SO进行了更多的研究之后,我一头扎进了这篇文章
Guzzle 6: no more json() method for responses
基本上执行以下操作将返回原始输出。
return $response->getBody()->getContents();
大头痛消失了。希望对大家有所帮助