Guzzle / http:如何获取http代码?

时间:2018-05-02 12:53:48

标签: guzzle guzzle6

Guzzle / Http。

的新手

我有一个API rest url登录,如果没有授权,将回复401代码,如果缺少值,则回复400.

我会得到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());
        }

2 个答案:

答案 0 :(得分:5)

您可以使用getStatusCode功能。

$response = $client->request( ... );

$statusCode = $response->getStatusCode();

注意。如果您的URL已重定向到其他URL,则需要为false属性设置allow_redirects值,以便能够检测父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()

答案 1 :(得分:0)

您也可以使用此代码:

    $client = new \GuzzleHttp\Client(['base_uri' 'http://...', 'http_errors' => false]);
希望能帮助你