Я использую Guzzle в Laravel 4, чтобы возвращать некоторые данные с другого сервера, но я не могу обработать ошибочный запрос Error 400
[status code] 400 [reason phrase] Bad Request
с помощью:
$client->get('http://www.example.com/path/'.$path, [ 'allow_redirects' => true, 'timeout' => 2000 ]);
как его решить? благодаря,
Как написано в официальной документации Guzzle: http://guzzle.readthedocs.org/en/latest/quickstart.html
Ошибка GuzzleHttp \ Exception \ ClientException для 400 ошибок уровня, если для параметра запроса исключений установлено значение true
Для правильной обработки ошибок я бы использовал этот код:
use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; try { $response = $client->get(YOUR_URL, [ 'connect_timeout' => 10 ]); // Here the code for successful request } catch (RequestException $e) { // Catch all 4XX errors // To catch exactly error 400 use if ($e->getResponse()->getStatusCode() == '400') { echo "Got response 400"; } // You can check for whatever error status code you need } catch (\Exception $e) { // There was another exception. }
$client->get('http://www.example.com/path/'.$path, [ 'allow_redirects' => true, 'timeout' => 2000, 'http_errors' => true ]);
Используйте опцию http_errors => false с запросом.