Nouveau sur Guzzle/Http.
J'ai une connexion URL de repos API qui répond avec un code 401 si non autorisé, ou 400 si des valeurs manquantes.
J'obtiendrais le code d'état http pour vérifier s'il y a des problèmes, mais je ne peux pas avoir uniquement le code (entier ou chaîne).
Ceci est mon morceau de code, j'ai utilisé des instructions ici ( http://docs.guzzlephp.org/en/stable/quickstart.html#exceptions )
namespace controllers;
use GuzzleHttp\Psr7;
use GuzzleHttp\Exception\ClientException;
$client = new \GuzzleHttp\Client();
$url = $this->getBaseDomain().'/api/v1/login';
try {
$res = $client->request('POST', $url, [
'form_params' => [
'username' => 'abc',
'password' => '123'
]
]);
} catch (ClientException $e) {
//echo Psr7\str($e->getRequest());
echo Psr7\str($e->getResponse());
}
Vous pouvez utiliser la fonction getStatusCode
.
$response = $client->request('GET', $url);
$statusCode = $response->getStatusCode();
Remarque: Si votre URL redirige vers une autre URL, vous devez définir la valeur de false
pour que la propriété allow_redirects
Soit capable de détecter le code d'état initial de l'URL parent.
// On client creation
$client = new GuzzleHttp\Client([
'allow_redirects' => false
]);
// Using with request function
$client->request('GET', '/url/with/redirect', ['allow_redirects' => false]);
Si vous souhaitez vérifier le code d'état dans le bloc catch
, vous devez utiliser $exception->getCode()
vous pouvez également utiliser ce code:
$client = new \GuzzleHttp\Client(['base_uri' 'http://...', 'http_errors' => false]);
j'espère vous aider