我有以下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);
}