Как я получаю тело от исключения guzzle6

Итак, у меня есть следующий код

    try {
$response = $client->request('POST', 'http://dev.api.example.com/v1/partners', [
// params
]);
} catch (ClientException $ex) {
Debug::dump($ex);
die;
}

Теперь я специально отправляю неверные данные для тестирования, и API посылает код 400, так как чего-то не хватает, и я ловлю его с помощью блока try and catch. Теперь я хочу показать тело, которое возвращает API. Я пробовал следующее

$ex->getResponse()->getBody()

Но все это возвращает следующее.

GuzzleHttp\Psr7\Stream Object
(
[stream:GuzzleHttp\Psr7\Stream:private] => Resource id #73
[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
(
)

)

В то время как API отправляет это в сообщении

{
"success": false,
"error": {
"code": 400,
"message": "The name has already been taken.<br />The email field is required."}
}

0

Решение

Хорошо, я понял это. Все, что вам нужно сделать, это сделать следующее в исключении.

$ Экс> GetResponse () -> getBody () -> getContents ()

По состоянию на

http://docs.guzzlephp.org/en/latest/psr7.html

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]