Saltar al contenido

Guzzlehttp – ¿Cómo obtener el cuerpo de una respuesta de Guzzle 6?

Solución:

Guzzle implementa PSR-7. Eso significa que, de forma predeterminada, almacenará el cuerpo de un mensaje en una secuencia que utiliza secuencias temporales de PHP. Para recuperar todos los datos, puede utilizar el operador de conversión:

$contents = (string) $response->getBody();

También puedes hacerlo con

$contents = $response->getBody()->getContents();

La diferencia entre los dos enfoques es que getContents devuelve el contenido restante, de modo que una segunda llamada no devuelve nada a menos que busque la posición de la secuencia con rewind o seek .

$stream = $response->getBody();
$contents = $stream->getContents(); // returns all the contents
$contents = $stream->getContents(); // empty string
$stream->rewind(); // Seek to the beginning
$contents = $stream->getContents(); // returns all the contents

En cambio, al utilizar las operaciones de conversión de cadenas de PHP, leerá todos los datos de la secuencia desde el principio hasta que se alcance el final.

$contents = (string) $response->getBody(); // returns all the contents
$contents = (string) $response->getBody(); // returns all the contents

Documentación: http://docs.guzzlephp.org/en/latest/psr7.html#responses

Si espera JSON de vuelta, la forma más sencilla de obtenerlo:

$data = json_decode($response->getBody()); // returns an object

// OR

$data = json_decode($response->getBody(), true); // returns an array

json_decode() arrojará automáticamente el cuerpo a string, por lo que no es necesario llamar getContents().

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *