2016-07-04 224 views
-5

我有以下方法:如何在沒有連接的情況下使用OkHttp獲取HTTP狀態碼?

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

但在某些情況下(例如,當我拔下電話網絡,從中國訪問谷歌或服務器壞了),它給了我一個IOException而不是錯誤的碼。

如何獲得像Volley這樣的所有HTTP狀態碼?

+0

由於狀態碼由服務器**發送**,所以在網絡斷開或服務器崩潰的情況下,將不會有http狀態碼。 –

+0

謝謝,我犯了一個錯誤。 –

回答

0

在這種情況下,您不會得到任何狀態碼。閱讀documentation

Response execute() throws IOException

立即調用該請求,並且塊直到響應可以被處理或者是錯誤的。 調用者可以用響應的Response.body方法讀取響應主體。爲了避免資源泄漏,調用者必須關閉響應主體。請注意,傳輸層成功(接收HTTP響應代碼,標頭和主體)並不一定表示應用層成功:響應仍可能指示不愉快的HTTP響應代碼,如404500

拋出:

  • IOException:如果所述請求不能被由於消除,連接問題或超時執行。由於網絡在交換過程中可能會失敗,因此遠程服務器可能會在失敗之前接受請求。

  • IllegalStateException:當呼叫已經執行。

一種IOException如果請求不能被由於連接問題執行預期。

相關問題