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");
      }
  };
}