Android 如何发出截击请求,在第一次呼叫后不应以任何方式重试?
我使用截击请求呼叫服务器,但有时当网络中存在延迟时,它会再次向服务器发出请求Android 如何发出截击请求,在第一次呼叫后不应以任何方式重试?,android,android-volley,Android,Android Volley,我使用截击请求呼叫服务器,但有时当网络中存在延迟时,它会再次向服务器发出请求 但根据我的请求,无论服务器是否响应,它都应该只调用服务器一次。截取默认重试策略是: /** The default socket timeout in milliseconds */ public static final int DEFAULT_TIMEOUT_MS = 2500; /** The default number of retries */ public static final int DEFAUL
但根据我的请求,无论服务器是否响应,它都应该只调用服务器一次。截取默认重试策略是:
/** The default socket timeout in milliseconds */
public static final int DEFAULT_TIMEOUT_MS = 2500;
/** The default number of retries */
public static final int DEFAULT_MAX_RETRIES = 1;
/** The default backoff multiplier */
public static final float DEFAULT_BACKOFF_MULT = 1f;
您可以在DefaultRetryPolicy.java
中找到它
所以您可以看到,默认情况下,volley会发出一个重试请求
尝试使用较小的TIMEOUT
(如果您不想等待2500ms),或使用大于2500ms的超时来获得答案),但保留其他值,例如:
// Wait 20 seconds and don't retry more than once
myRequest.setRetryPolicy(new DefaultRetryPolicy(
(int) TimeUnit.SECONDS.toMillis(20),
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
如果设置了自定义RetryPolicy,则在retry方法中抛出截击错误。截击从不重试
setRetryPolicy(myRetryPolicy())
LogCat
11-05 13:00:36.078 6014-6314/*****:Volley Error com.android.Volley.TimeoutError
11-05 13:00:36.079 6014-6014/*******:截击错误com.android.Volley.Volley错误:不要重试
请相信作者,因为你采取了这个答案
public RetryPolicy myRetryPolicy(){
return new RetryPolicy() {
@Override
public int getCurrentTimeout() {
return 10000;
}
@Override
public int getCurrentRetryCount() {
return 0;
}
@Override
public void retry(VolleyError error) throws VolleyError {
Log.d(TAG, "Volley Error " + error.toString());
throw new VolleyError("Do Not Retry");
}
};
}