2017-09-01 14 views
0

リクエストステータスコードをハンドリングしようとしていますが、基本的にステータスが200かどうかをチェックしています。 「GuzzleHttp \クライアント」と呼ばれるパッケージを使用してイム、404があった場合、それは私にエラーを与える:GuzzleHttpでクライアントエラー例外を処理する

Client error: `GET https://api.someurl---` resulted in a `404 Not Found` response: 
{"generated_at":"2017-09-01T16:59:25+00:00","schema":"","message":"No events scheduled for this date."} 

しかし、画面内よりは、私が変更したい形式で表示されるので、キャッチしようとしてイムビュー上に別の出力を与えます。しかし、動作していない、それは私に赤い画面エラーを与える。

try { 
      $client = new \GuzzleHttp\Client(); 
      $request = $client->request('GET', $url); 
      $status = $request->getStatusCode(); 
      if($status == 200){ 
       return $status; 

      }else{ 

       throw new \Exception('Failed'); 
      } 

     } catch (\GuzzleHttp\Exception\ConnectException $e) { 
      //Catch errors 
      return $e->getStatusCode(); 

     } 
+0

グズルリクエストからの例外、または接続例外を捕まえようとしていますか? – JLeggatt

+0

404や他のステータスコードが200かどうかを確認しようとしている –

答えて

0

オーケーあなたはのtry-catchに固執したい場合は、このような何かやりたいので:キャッチが$requestがそれを意味成功するでしょうトリガされない場合は

$client = new \GuzzleHttp\Client(); 

try { 
    $request = $client->request('GET', $url); 
} catch (\GuzzleHttp\Exception\ConnectException $e) { 
    // This is will catch all connection timeouts 
    // Handle accordinly 
} catch (\GuzzleHttp\Exception\ClientException $e) { 
    // This will catch all 400 level errors. 
    return $e->getResponse()->getStatusCode(); 
} 

$status = $request->getStatusCode(); 

」をステータスコードが200の場合 を設定するときに、400エラーをキャッチするには、http_errorsリクエストオプションがtrueに設定されていることを確認してください。