2014-10-06 56 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