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());
}
答案 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]);
希望能帮助你