2014-10-06 59 views
2

我使用的是android volley,當我提出請求時,我得到一個超時錯誤。我增加了超時使用Android凌空超時不正常工作

request.setRetryPolicy(new DefaultRetryPolicy(
       5000, 
       DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
       DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

該實現的問題是我得到一個request.finish結果:7123ms。我應該採取timeoutError。是我不明白關於android超時?我怎樣才能將超時精確設置爲5000ms?

編輯: 我發現在prasadthangavel.blogspot在每次重試中,請求正在增加其時間。我認爲,這應該是我的問題,但 如果我根據Android的凌空默認重試政策

@Override 
    public void retry(VolleyError error) throws VolleyError { 
     mCurrentRetryCount++; 
     mCurrentTimeoutMs += (mCurrentTimeoutMs * mBackoffMultiplier); 
     if (!hasAttemptRemaining()) { 
      throw error; 
     } 
    } 
    /** 
    * Returns true if this policy has attempts remaining, false otherwise. 
    */ 
    protected boolean hasAttemptRemaining() { 
     return mCurrentRetryCount <= mMaxNumRetries; 
    }` 

沒有其他重試將進行編輯我的要求

request.setRetryPolicy(new DefaultRetryPolicy(
       5000, 0,0)); 

。但是這也沒有解決我的問題。我有一些request.finish 7200ms正在執行的請求。爲什麼每次連接時間或讀取時間大於5000毫秒時都不會拋出異常?

+0

我應該在哪裏調用'setRequestPolicy()?'我面臨類似的超時問題。 – Roon13 2015-05-15 13:36:16

+0

你能解決這個問題嗎?我也有同樣的問題。我在想也許RetryPolicy只適用於重試,而不是最初的請求,也許? – kriztho 2018-03-05 20:08:36

回答

0

排球套裝默認套接字& ConnectionTImeout爲所有請求的5秒。

request.setRetryPolicy(new DefaultRetryPolicy(
      0, 
      DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
+0

所以在我的例子中,我的超時時間是5000 + 5000 = 10000? – user3009752 2014-10-06 11:04:25

1

檢查你的代碼

request.setRetryPolicy(new DefaultRetryPolicy(
      5000, 
      DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

您設置timout到5000毫秒,也沒有重來DefaultRetryPolicy.DEFAULT_MAX_RETRIES,其值是1,這意味着什麼。您的請求超時時間爲首次請求5秒,重試請求超過5秒。在兩次請求之後,這意味着您的案件需要10秒。請求超時將發生。

+0

這不適合我。我已將TIMEOUT_MS設置爲1000ms(1秒),並將MAX_RETRIES設置爲0.但初始請求需要45秒纔會返回錯誤消息。任何提示? – kriztho 2018-03-05 20:07:43