¿Alguien sabe la forma correcta de postusar JSON Guzzle?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
Recibo una internal server errorrespuesta del servidor. Funciona usando Chrome Postman.

'json' => $data: stackoverflow.com/a/44154428/842768Respuestas:
Para Guzzle 5 y 6 lo haces así:
Docs
fuente
RequestOptionsconstantes para las teclas de matriz de opciones (GuzzleHttp\RequestOptions::JSONen este caso): hace que los errores tipográficos sean más fáciles de detectar, ya que de repente se convierten en avisos en lugar de solo errores silenciosos que esperan causar problemas.jssonpor ejemplo) no generará ningún error, y puede tomarse un tiempo para encontrar su error tipográfico.Para Guzzle <= 4 :
Es una solicitud de publicación sin formato, por lo que poner el JSON en el cuerpo resolvió el problema
fuente
$client->post($url, ['body' => $string, 'headers' => ['Content-type' => 'application/json']]);'json' => $data: stackoverflow.com/a/44154428/842768La forma simple y básica (guzzle6):
Para obtener el código de estado de respuesta y el contenido del cuerpo, hice esto:
fuente
Esto funcionó para mí (usando Guzzle 6)
fuente
fuente
['json' => $body]es la mejor manera aquí, como lo menciona la respuesta de Michael.$res->json();solo funciona en Guzzle 5.3. Se ha eliminado en v6.json_decode()lugar.fuente
Esto funciona para mí con Guzzle 6.2:
De acuerdo con la documentación guzzle hacer el json_encode
fuente
Ver documentos .
fuente
Versión de PHP: 5.6
Versión de Symfony: 2.3
Guzzle: 5.0
Recientemente tuve una experiencia acerca de enviar json con Guzzle. Uso Symfony 2.3, por lo que mi versión de Guzzle puede ser un poco más antigua.
También le mostraré cómo usar el modo de depuración y puede ver la solicitud antes de enviarla,
Cuando hice la solicitud como se muestra a continuación, obtuve la respuesta exitosa;
fuente
La respuesta de @ user3379466 se puede hacer funcionar estableciendo
$datalo siguiente:Lo que nuestro proyecto necesitaba era insertar una variable en una matriz dentro de la cadena json, lo que hice de la siguiente manera (en caso de que esto ayude a alguien):
Entonces con
$existing_variableser, digamos, 90210, obtienes:También vale la pena señalar que es posible que también desee establecer el
'Accept' => 'application/json'en caso de que el punto final que está alcanzando se preocupe por ese tipo de cosas.fuente
$datajson_encode$data = json_encode(array('collection' => $existing_variable));@ user3379466 es correcto, pero aquí lo reescribo por completo:
--- Solución para * Guzzle 6 * --- -paquete que necesita:
fuente
Las respuestas anteriores no me funcionaron de alguna manera. Pero esto funciona bien para mí.
fuente
Simplemente use esto, funcionará
fuente