2016-07-04 3 views
-5

私は、次の方法があります。接続していないときにOkHttpを使用してHTTPステータスコードを取得するにはどうすればよいですか?

Response httpResponse = client.newCall(request).execute(); 
httpResponse.code(); 

しかし、いくつかのケースでは(例えば、私は携帯電話のネットワークを切断する際、中国からGoogleにアクセスしたり、サーバーが壊れているが)、それは私の代わりに、エラーのIOExceptionを与えますコード。

VolleyのようにすべてのHTTPステータスコードを取得するにはどうすればよいですか?

+0

ステータスコードがサーバー**によって送信されるため、切断されたネットワークまたは完全なサーバーの故障の場合は、httpステータスコードはありません。 –

+0

ありがとう、私は間違いをした。 –

答えて

0

この場合、ステータスコードは表示されません。 documentationを読む:

Response execute() throws IOException

はすぐにリクエストを呼び出し、応答までのブロックが処理されるか、またはエラーであることができます。 呼び出し元は、応答のResponse.bodyメソッドを使用して応答本文を読み取ることができます。リソースが漏れないようにするには、発信者は応答本文を閉じる必要があります。

注輸送層の成功は、(HTTP応答コードを受信し、ヘッダとボディ)は、必ずしもアプリケーション層の成功を示していない:応答はまだ404又は500ような不幸なHTTP応答コードを示すことができます。

例外:

  • IOExceptionを:要求が原因のキャンセル、接続問題またはタイムアウトに実行できなかった場合。交換中にネットワークに障害が発生する可能性があるため、障害前にリモートサーバーが要求を受け入れた可能性があります。

  • IllegalStateException:コールがすでに実行されている場合。

要求が原因接続問題に実行できなかった場合IOExceptionが期待されています。

関連する問題