2016-01-12 26 views
0

我想在android中使用凌空基本上捕捉兩種類型的錯誤。我使用了errorListener來處理失敗的api調用。以下是我正在做的事情。在android中使用凌雲處理響應超時

Response.ErrorListener errorListener = new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

      if(error instanceof NoConnectionError) 
      { 
       // Did not connect 
      } 
      else if(error instanceof TimeoutError) 
      { 
      //Response Timeout error is what I have assumed. 
      } 

     } 
    }; 

我基本上有興趣區分ConnectionTimeOut和ResponseTimeOut。這是正確的

編輯: 我需要做一些驗證的API調用,我在2G上。該請求被髮送到服務器,但由於超時而未收到響應。所以我想知道這個請求是否傳遞給了服務器,或者請求並沒有發送給服務器。從我的假設是,如果客戶端沒有連接到服務器,它將是connectiontimeout錯誤,否則如果請求發送到服務器,並且客戶端沒有獲得響應,則會超時。那麼我的理解是對的,還是我錯過了什麼?

+0

什麼是你的問題實際上是?當你得到具體的錯誤時該怎麼辦? –

+0

請參閱編輯。 –

回答

2

我認爲你可以使用HTTP代碼。

如果它是一個408錯誤,其請求超時

客戶端沒有產生時間內的請求,服務器準備等待。客戶可以在以後不做修改的情況下重複請求。

而如果它是一個504

所述的服務器,而作爲網關或代理,沒有收到從由URI所指定的上游服務器及時響應(例如HTTP,FTP,LDAP)或者在嘗試完成請求時需要訪問某個其他輔助服務器(例如DNS)。

而對於讓你做了錯誤代碼:

error.networkResponse.statusCode 

Source