Android 截击请求重试未按预期工作
我有以下Android 截击请求重试未按预期工作,android,android-volley,Android,Android Volley,我有以下截击请求,但重试不会在出现错误时重试请求,例如,请求时突然没有网络 Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { } }; Request myReq = new Request(Request.Method.POST, url, errorListen
截击请求
,但重试不会在出现错误时重试请求,例如,请求时突然没有网络
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);
Response.ErrorListener ErrorListener=新建Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
};
Request myReq=新请求(Request.Method.POST、url、errorListener){
@凌驾
受保护的响应parseNetworkResponse(NetworkResponse响应){}
@凌驾
受保护的void deliverResponse(对象响应){}
@凌驾
公共映射getParams()引发AuthFailureError{
返回null;
}
};
myReq.setRetryPolicy(新的DefaultRetryPolicy(Constants.DEFAULT\u CONNECTION\u TIMEOUT,
10,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
添加(myReq);
有什么我遗漏的吗?公共静态无效请求(上下文上下文、最终截击回调requestCallback、int requestMethod、字符串requestUrl、对象postObject、类类类型、布尔值isAuthenticated、字符串标记){
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);
}
GsonRequest request=新的GsonRequest(
上下文
请求方法,
请求URL,
新的Gson().toJson(postObject),
类类型,
我得到了认证,
新的Response.Listener(){
@凌驾
公共响应(T响应){
onResponseListener(响应、请求回调);
}
},
onErrorListener(上下文、requestCallback)
);
request.setTag(tag);
getInstance(上下文).addToRequestQueue(请求);
}
公共无效addToRequestQueue(请求){
request.setRetryPolicy(新的DefaultRetryPolicy(PrjConfig.request\u TIMEOUT\u MILLIS,PrjConfig.request\u RETRIES,PrjConfig.request\u TIMEOUT\u乘数));
request.setShouldCache(false);
getRequestQueue().add(请求);
}
介意解释一下吗?哦,你是对的,我的答案不清楚,但我认为你应该使用JsonRequest而不是Request。你想发布什么数据?它不会重试,因为可能没有什么可以重试的。你收到服务器错误了吗?lol我删除了数据代码段,但实际上它在getParams()
中不应该返回null,所以我的情况是,我没有收到网络错误,但它没有重试,或者它希望我手动重试?我明白了。我之所以投反对票是因为:。请编辑,我将收回我的反对票。