当使用Symfony http客户端(RetryableHttpClient)和AsyncResponse:
时,我遇到了获取错误响应(400/500)的内容的麻烦内容始终为空,无论我是否在try/catch语句中执行getContent()
或使用getContent(false)
(false
=不要在错误状态码上抛出异常)。文档指出,getContent()
将等待整个响应被获取,即使使用流/异步响应。
如果我测试相同的请求,即通过邮差响应内容是json,如预期的。
V1例子:
/* @var SymfonyComponentHttpClientRetryableHttpClient $client */
$response = $client->request('POST', '/something' , [
'auth_bearer' => '******',
'body' => [
"some" => "thing"
]
]);
/* @var SymfonyComponentHttpClientResponseAsyncResponse $response */
p_r($response->getContent(false)); // empty
示例V2 (try/catch):try {
... see V1
$response->getContent(); // throws exception
} catch (ClientExceptionInterface|ServerExceptionInterface $exception) {
p_r($exception->getResponse()->getContent(false)); // empty
}
您可以尝试toArray吗?在有效负载Json的文档中,最好使用toArray链接
$exception->getResponse()->toArray(false)