¿Alguien sabe la forma correcta de post
usar JSON Guzzle
?
$request = $this->client->post(self::URL_REGISTER,array(
'content-type' => 'application/json'
),array(json_encode($_POST)));
Recibo una internal server error
respuesta del servidor. Funciona usando Chrome Postman
.
'json' => $data
: stackoverflow.com/a/44154428/842768Respuestas:
Para Guzzle 5 y 6 lo haces así:
Docs
fuente
RequestOptions
constantes para las teclas de matriz de opciones (GuzzleHttp\RequestOptions::JSON
en 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.jsson
por 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
$data
lo 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_variable
ser, 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
$data
json_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