Laravel 5:在异常中进食-> getStatusCode?

时间:2019-01-25 09:10:24

标签: php laravel exception-handling guzzle http-status-codes

我正在为自己编写一个小应用程序。此应用程序使用软件包Guzzle调用不同的网站。

但是,我想将每个请求以及获得的时间和请求持续时间以及请求状态代码存储在数据库中。我现在在这里面临的问题是,当请求失败时,我不知道如何获取http状态代码。

到目前为止,这是我的代码:

$client = $this->getGuzzleClient();
$request = $client->post($url, $headers, $value);
try {
    $response = $request->send();
    return $response->getBody();
}catch (\GuzzleHttp\Exception\RequestException $e){
    dd(array($e, $e->getResponse()));
}

$e->getResponse()返回null。我也尝试使用$e->getStatusCode()$e->getRequest()->getStatusCode()。两者都不起作用...

为了绝对确定请求是否有效,并且我处理了一个真正的例外情况,因此我致电了该网站https://httpstat.us/503。这将返回503 http状态代码...

那么,如何获取http状态代码?你们有什么主意吗?

致以问候,谢谢!

2 个答案:

答案 0 :(得分:1)

如果捕获到ServerException,则捕获到5xx,如果代码执行进入,则Guzzle收到了5xx。如果您捕获到一个RequestException,它也包含网络错误。如果代码执行是在RequestException上输入的,而没有在ServerException上输入的,则意味着Guzzle不是5xx错误,而是网络错误。

答案 1 :(得分:0)

$ errorstatuscode = $ exception->状态;

//从Excetion对象获取错误代码