Laravel 5: Guzzle -> getStatusCode для исключения? - PullRequest
0 голосов
/ 25 января 2019

Я программирую небольшое приложение для себя.Это приложение обращается к разным веб-сайтам с пакетом 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.Это возвращает код состояния http 503 ...

Итак, как я могу получить код статуса http?Ребята, у вас есть идеи?

С уважением и Спасибо!

1 Ответ

0 голосов
/ 25 января 2019

Если вы перехватываете исключение ServerException, вы получаете 5хх, если ввод кода выполняется там, то Guzzle получил 5хх. Если вы ловите RequestException, который также включает в себя сетевые ошибки Если выполнение кода входит в RequestException, но не в ServerException, это означает, что для Guzzle - это не ошибка 5xx, а ошибка сети.

...