guzzlehttp composer php request httpclient guzzle

composer - PHP GuzzleHttp. ¿Cómo hacer una solicitud de publicación con params?



guzzlehttp lumen (4)

Cómo realizar una solicitud de publicación con GuzzleHttp (versión 5.0).

Estoy tratando de hacer lo siguiente:

$client = new /GuzzleHttp/Client(); $client->post( ''http://www.example.com/user/create'', array( ''email'' => ''[email protected]'', ''name'' => ''Test user'', ''password'' => ''testpassword'' ) );

Pero recibo el error:

Error fatal de PHP: excepción no detectada ''InvalidArgumentException'' con el mensaje ''Ningún método puede manejar la clave de configuración del correo electrónico''


Como la respuesta de Marco está en desuso , debe usar la siguiente sintaxis (según el comentario de jasonlfunk):

$client = new /GuzzleHttp/Client(); $response = $client->request(''POST'', ''http://www.example.com/user/create'', [ ''form_params'' => [ ''email'' => ''[email protected]'', ''name'' => ''Test user'', ''password'' => ''testpassword'', ] ]);

Solicitud con archivos POST

$response = $client->request(''POST'', ''http://www.example.com/files/post'', [ ''multipart'' => [ [ ''name'' => ''file_name'', ''contents'' => fopen(''/path/to/file'', ''r'') ], [ ''name'' => ''csv_header'', ''contents'' => ''First Name, Last Name, Username'', ''filename'' => ''csv_header.csv'' ] ] ]);

Uso de verbos REST con params

// PUT $client->put(''http://www.example.com/user/4'', [ ''body'' => [ ''email'' => ''[email protected]'', ''name'' => ''Test user'', ''password'' => ''testpassword'', ], ''timeout'' => 5 ]); // DELETE $client->delete(''http://www.example.com/user'');

Datos POST asíncronos

Útil para largas operaciones de servidor.

$client = new /GuzzleHttp/Client(); $promise = $client->requestAsync(''POST'', ''http://www.example.com/user/create'', [ ''form_params'' => [ ''email'' => ''[email protected]'', ''name'' => ''Test user'', ''password'' => ''testpassword'', ] ]); $promise->then( function (ResponseInterface $res) { echo $res->getStatusCode() . "/n"; }, function (RequestException $e) { echo $e->getMessage() . "/n"; echo $e->getRequest()->getMethod(); } );

Más información para depurar

Si desea obtener más información detallada, puede usar la opción de debug como esta:

$client = new /GuzzleHttp/Client(); $response = $client->request(''POST'', ''http://www.example.com/user/create'', [ ''form_params'' => [ ''email'' => ''[email protected]'', ''name'' => ''Test user'', ''password'' => ''testpassword'', ], // If you want more informations during request ''debug'' => true ]);

Documentation es más explícita sobre nuevas posibilidades.


Prueba esto

$client = new /GuzzleHttp/Client(); $client->post( ''http://www.example.com/user/create'', array( ''body'' => array( ''email'' => ''[email protected]'', ''name'' => ''Test user'', ''password'' => ''testpassword'' ) ) );


Tenga en cuenta en Guzzle V6.0 +, otra fuente de obtener el siguiente error puede ser el uso incorrecto de JSON como una matriz:

Pasar la opción de solicitud "cuerpo" como una matriz para enviar una solicitud POST ha quedado en desuso. Utilice la opción de solicitud "form_params" para enviar una solicitud application / x-www-form-urlencoded, o la opción de solicitud "multipart" para enviar una solicitud multipart / form-data.

Incorrecto :

$response = $client->post(''http://example.com/api'', [ ''body'' => [ ''name'' => ''Example name'', ] ])

Correcto :

$response = $client->post(''http://example.com/api'', [ ''json'' => [ ''name'' => ''Example name'', ] ])

Correcto :

$response = $client->post(''http://example.com/api'', [ ''headers'' => [''Content-Type'' => ''application/json''], ''body'' => json_encode([ ''name'' => ''Example name'', ]) ])


$client = new /GuzzleHttp/Client(); $request = $client->post(''http://demo.website.com/api'', [ ''body'' => json_encode($dataArray) ]); $response = $request->getBody();

Añadir

openssl.cafile en el archivo php.ini