Intereting Posts
Regex для обнаружения одного и того же символа более пяти раз? Функция JavaScript не реагирует Множественный список выбора состояния, не отображающий все города в другом списке (Php, mysql, ajax) PHP: обработка специальных символов с помощью iconv Неустранимая ошибка: Не удалось OAuthException – Неавторизованный IP-адрес источника В объявлениях пространства имен внутри включенных файлов автоматически входит пространство имен родительского файла (PHP)? Youtube Загрузка видео в php с использованием регулярного выражения Фильтровать HTML на php При удалении каскада – там, где я должен добавить его Идентификатор процесса проверки PHP Dreamhost – Последняя версия PEAR Не удалось создать почтовую функцию. Почему эта ошибка возникает Избегайте перезагрузки страницы при отправке формы с помощью ajax с laravel Ошибка mPDF: невозможно найти таблицу xref mysql + php извлекает листовые дети с помощью пути

Guzzle: обрабатывать 400 плохих запросов

Я использую 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 с запросом.