J'utilise Guzzle dans Laravel 4 pour renvoyer des données d'un autre serveur, mais je ne peux pas gérer la mauvaise requête de l'erreur 400
[status code] 400 [reason phrase] Bad Request
en utilisant:
$client->get('http://www.example.com/path/'.$path,
[
'allow_redirects' => true,
'timeout' => 2000
]);
comment le résoudre? Merci,
Comme écrit dans la documentation officielle de Guzzle: http://guzzle.readthedocs.org/en/latest/quickstart.html
Une exception GuzzleHttp\Exception\ClientException est levée pour 400 erreurs de niveau si l'option de demande d'exceptions est définie sur true
Pour une gestion correcte des erreurs, j'utiliserais ce code:
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
try {
$response = $client->get(YOUR_URL, [
'connect_timeout' => 10
]);
// Here the code for successful request
} catch (RequestException $e) {
// Catch all 4XX errors
// To catch exactly error 400 use
if ($e->getResponse()->getStatusCode() == '400') {
echo "Got response 400";
}
// You can check for whatever error status code you need
} catch (\Exception $e) {
// There was another exception.
}
$client->get('http://www.example.com/path/'.$path,
[
'allow_redirects' => true,
'timeout' => 2000,
'http_errors' => true
]);
Utilisez http_errors => false option avec la demande.