2017-04-10 14 views
0

上のコードへのアクセス私はがつがつ食うことにより、APIへの接続:がつがつ食う - サーバーエラー

$client = new Client(); 

try { 
    $res = $client->post('xxx' . $this->url , [ 
     'headers' => $headers, 
     'json'  => $data, 
    ]); 

} catch(Exception $e) { 
    echo json_decode($e->getResponse()->getBody(), true); 
} 

そして、それは働いているが、それは「キャッチ」だとき、私は応答からコードを取得する必要がありますが、私は取得:

Server error: `POST XXXXX` resulted in a `555 Error` response: {"status":"ERROR","errors":[{"message":"Subscribers already exists in this subscribers list","code":1304}]} 

コードを取得できません。これを行う方法?ここで

UPDATE
はフル応答で画面です。
enter image description here

+0

例外コードについてお聞きしますか?または、HTTPリターンステータスコード? –

+0

@AlexHowansky HTTP。このコード - > '' '" code ":1304''' – Vertisan

+1

サーバー上で実行されているソフトウェアのドキュメントを参照する必要があります。 – Jaime

答えて

0

例外から応答を抽出するだけです。 Guzzleは特別な場合はBadResponseExceptionを投げるので、このクラスを見てください。

try { 
    // ... 
} catch (BadResponseException $exception) { 
    // 555 
    $exception->getCode(); 

    $appError = json_decode(
     $exception->getResponse()->getBody()->getContents(), 
     true 
    ); 
    // 1304 
    $appErrorCode = $appError['errors'][0]['code']; 
} 
+0

まだ同じ問題、私は画像で質問を更新しました。 – Vertisan

+0

最後に ' - > getContents()'に注意してください。そして、私はあなたにアイデアがあることを願っています。例外にはレスポンスが含まれています。通常のレスポンス(JSONの抽出など)のように作業できます。 –

関連する問題