web-dev-qa-db-ja.com

GuzzleでHTTPステータスコードを取得する方法

Guzzle/Httpの新機能。

許可されていない場合は401コードで、値がない場合は400で応答するAPI REST URLログインがあります。

私はいくつかの問題があるかどうかを確認するためにhttpステータスコードを取得しますが、コード(整数または文字列)のみを持つことはできません。

これは私のコードです、ここで説明を使用しました( 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

getStatusCode関数を使用できます。

_$response = $client->request('GET', $url);
$statusCode = $response->getStatusCode();
_

注:URLが他のURLにリダイレクトする場合、_allow_redirects_プロパティのfalse値を設定して、親URLの初期ステータスコードを検出します。

_// On client creation
$client = new GuzzleHttp\Client([
  'allow_redirects' => false
]);

// Using with request function
$client->request('GET', '/url/with/redirect', ['allow_redirects' => false]);
_

catchブロックのステータスコードを確認する場合は、$exception->getCode()を使用する必要があります

11
Scofield

このコードを使用することもできます:

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

あなたの助けを願っています

0
Emmanuel Lutula