Comment faire une demande de publication avec GuzzleHttp (version 5.0) . J'essaie de faire ce qui suit et j'obtiens une erreur
$client = new \GuzzleHttp\Client();
$client->post(
'http://www.example.com/user/create',
array(
'email' => '[email protected]',
'name' => 'Test user',
'password' => 'testpassword'
)
);
Erreur irrécupérable PHP: exception non récupérée 'InvalidArgumentException' avec le message 'Aucune méthode ne peut gérer la clé de configuration de messagerie'
Cette méthode est maintenant obsolète en 6.0. Au lieu de 'body', utilisez 'form_params'
Essaye ça
$client = new \GuzzleHttp\Client();
$client->post(
'http://www.example.com/user/create',
array(
'body' => array(
'email' => '[email protected]',
'name' => 'Test user',
'password' => 'testpassword'
)
)
);
La réponse de Marco étant obsolète, vous devez utiliser la syntaxe suivante (en fonction du commentaire 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',
]
]);
$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'
]
]
]);
// 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');
Utile pour les opérations de serveur longues.
$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();
}
);
Si vous voulez plus d'informations, vous pouvez utiliser l'option debug
comme ceci:
$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 est plus explicites sur les nouvelles possibilités.
Remarque: dans Guzzle version 6.0 +, une autre source d’obtention de l’erreur suivante peut être une utilisation incorrecte de JSON en tant que tableau:
Passer l'option de requête "body" en tant que tableau pour envoyer un POST La requête est obsolète. Veuillez utiliser la requête "form_params" possibilité d'envoyer une demande/x-www-form-urlencoded, ou un Option de demande "multipart" pour envoyer une demande multipart/form-data.
Incorrect :
$response = $client->post('http://example.com/api', [
'body' => [
'name' => 'Example name',
]
])
Correct :
$response = $client->post('http://example.com/api', [
'json' => [
'name' => 'Example name',
]
])
Correct :
$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();
Ajouter
openssl.cafile
dans le fichier php.ini