web-dev-qa-db-ja.com

ガズル:400件の不正なリクエストを処理する

Laravel 4でGuzzleを使用して別のサーバーからデータを返していますが、エラー400の不正なリクエストを処理できません

 [status code] 400 [reason phrase] Bad Request

使用して:

$client->get('http://www.example.com/path/'.$path,
            [
                'allow_redirects' => true,
                'timeout' => 2000
            ]);

それを解決する方法は?おかげで、

19
mwafi

Guzzle公式ドキュメントに記載されているとおり: http://guzzle.readthedocs.org/en/latest/quickstart.html

例外要求オプションがtrueに設定されている場合、GuzzleHttp\Exception\ClientExceptionが400レベルのエラーに対してスローされます

正しいエラー処理のために、私はこのコードを使用します:

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.

}
48
Hpatoio
$client->get('http://www.example.com/path/'.$path,
            [
                'allow_redirects' => true,
                'timeout' => 2000,
                'http_errors' => true
            ]);

要求でhttp_errors => falseオプションを使用します。

12
adam