Guzzle: handle 400 bad request

后端 未结 2 580
梦毁少年i
梦毁少年i 2020-12-08 07:50

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 Requ         


        
相关标签:
2条回答
  • 2020-12-08 08:34
    $client->get('http://www.example.com/path/'.$path,
                [
                    'allow_redirects' => true,
                    'timeout' => 2000,
                    'http_errors' => true
                ]);
    

    Use http_errors => false option with the request.

    0 讨论(0)
  • 2020-12-08 08:38

    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.
    
    }
    
    0 讨论(0)
提交回复
热议问题