我正在使用android排球,当我发出请求时,我收到超时错误。我使用
增加了超时request.setRetryPolicy(new DefaultRetryPolicy(
5000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
这个实现的问题是我得到request.finish:7123ms的结果。我应该采取timeoutError。关于android超时我有点不明白吗?如何将超时精确设置为5000ms?
编辑: 我在prasadthangavel.blogspot发现,在每次重试时,请求都会增加时间。我认为这应该是我的问题,但是 如果我编辑我的请求
request.setRetryPolicy(new DefaultRetryPolicy(
5000, 0,0));
根据android volley默认重试策略
@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.finish 7200ms。为什么每次连接时间或读取时间都超过5000毫秒时都不会抛出异常?
答案 0 :(得分:1)
检查您的代码
request.setRetryPolicy(new DefaultRetryPolicy(
5000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
将timout设置为5000毫秒,并且不重试DefaultRetryPolicy.DEFAULT_MAX_RETRIES,其值为1,这意味着。对于第一个请求,您的请求超时为5秒,对于重试请求,请求超时为5秒。在你的情况下,两个请求意味着10秒。请求超时将发生。
答案 1 :(得分:0)
Volley设置默认Socket&amp;对于所有请求,ConnectionTImeout为5秒。
request.setRetryPolicy(new DefaultRetryPolicy(
0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));