使用symfony http client的空响应内容



当使用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)

最新更新