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()
.