web-dev-qa-db-fra.com

Comment récupérer le code d'état HTTP avec Guzzle?

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());

}
7
sineverba

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()

11
Scofield

vous pouvez également utiliser ce code:

    $client = new \GuzzleHttp\Client(['base_uri' 'http://...', 'http_errors' => false]);

j'espère vous aider

0
Emmanuel Lutula