#php #guzzle
#php #guzzle
Вопрос:
На моем веб-сайте я использую Guzzle для сообщения о попытках взлома AbuseIPDB. Например, когда хакер посещает /.env, отчет будет автоматически отправлен. AbuseIPDB выдает 429, когда вы отправляете более одного отчета для одного и того же IP. Затем Guzzle выдает ошибку 500, поскольку AbuseIPDB не дал 200 OK.
Мой вопрос в том, как я могу предотвратить уничтожение программы Guzzle при получении ответа, отличного от 200 OK? Возможно ли это сделать?
Комментарии:
1. Перехват исключений или вы можете установить эту опцию в своем запросе «‘exceptions’ => false», чтобы отключить исключения.
Ответ №1:
Исключение GuzzleHttp Exception ServerException выдается для ошибок уровня 500, если для параметра запроса http_errors установлено значение true. Это исключение распространяется из GuzzleHttp Exception BadResponseException .
Я добавлю примерный пример того, как обрабатывать только 500 ошибок,
try{
$client = new GuzzleHttpClient(['headers' => ['Authorization' => 'Bearer ' . $token]]);
$guzzleResponse = $client->get('/foobar');
// or can use
// $guzzleResponse = $client->request('GET', '/foobar')
if ($guzzleResponse->getStatusCode() == 200) {
$response = json_decode($guzzleResponse->getBody(),true);
//perform your action with $response
}
}
catch(GuzzleHttpExceptionServerException $se){
// you can catch here 500 response errors
// You can either use logs here you can use this package to handle logs https://github.com/Seldaek/monolog
return $se->getMessage();
}catch(Exception $e){
//other errors
}
Аналогичным образом вы можете обработать 400 исключений с помощью ClientException, подробнее об исключениях см. В документах.