凌空请求重试未按预期工作



我有以下VolleyRequest但是当出现错误时重试请求,例如,请求时突然没有网络。

Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
};
Request myReq = new Request(Request.Method.POST, url, errorListener) {
@Override
protected Response parseNetworkResponse(NetworkResponse response) {}
@Override
protected void deliverResponse(Object response) {}
@Override
public Map<String, String> getParams() throws AuthFailureError {
return null;
}
};
myReq.setRetryPolicy(new DefaultRetryPolicy(Constants.DEFAULT_CONNECTION_TIMEOUT,
10,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(myReq);

有什么我想念的吗?

public static <T> void request(Context context, final VolleyCallback<T> requestCallback, int requestMethod, String requestUrl, Object postObject, Class<T> classType, boolean isAuthenticated, String tag) {
GsonRequest<T> request = new GsonRequest<>(
context,
requestMethod,
requestUrl,
new Gson().toJson(postObject),
classType,
isAuthenticated,
new Response.Listener<T>() {
@Override
public void onResponse(T response) {
onResponseListener(response, requestCallback);
}
},
onErrorListener(context, requestCallback)
);
request.setTag(tag);
VolleyRequestQueue.getInstance(context).addToRequestQueue(request);
}    
public <T> void addToRequestQueue(Request<T> request) {
request.setRetryPolicy(new DefaultRetryPolicy(PrjConfig.REQUEST_TIMEOUT_MILLIS, PrjConfig.REQUEST_RETRIES, PrjConfig.REQUEST_TIMEOUT_MULTIPLIER));
request.setShouldCache(false);
getRequestQueue().add(request);
}    

最新更新