I'm using Guzzle in Laravel 4 to return some data from another server, but I can't handle Error 400 bad request
[status code] 400 [reason phrase] Bad Request
using:
$client->get('http://www.example.com/path/'.$path, [ 'allow_redirects' => true, 'timeout' => 2000 ]);
how to solve it? thanks,
Sending Requests You can create a request and then send the request with the client when you're ready: use GuzzleHttp\Psr7\Request; $request = new Request('PUT', 'http://httpbin.org/put'); $response = $client->send($request, ['timeout' => 2]);
Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and trivial to integrate with web services. Simple interface for building query strings, POST requests, streaming large uploads, streaming large downloads, using HTTP cookies, uploading JSON data, etc...
You can use the getStatusCode function. $response = $client->request('GET', $url); $statusCode = $response->getStatusCode();
Each key is the name of a header, and each value is a string or array of strings representing the header field values. // Set various headers on a request $client->request('GET', '/get', [ 'headers' => [ 'User-Agent' => 'testing/1.0', 'Accept' => 'application/json', 'X-Foo' => ['Bar', 'Baz'] ] ]);
As written in Guzzle official documentation: http://guzzle.readthedocs.org/en/latest/quickstart.html
A GuzzleHttp\Exception\ClientException is thrown for 400 level errors if the exceptions request option is set to true
For correct error handling I would use this code:
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->hasResponse()){ 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 ]);
Use http_errors => false option with the request.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With