android:volley在收到403代码时不断重试
我还修改了android:volley在收到403代码时不断重试,android,android-volley,http-response-codes,Android,Android Volley,Http Response Codes,我还修改了重试策略,但它不起作用。代码如下: JsonObjectRequest getReq = new JsonObjectRequest(Request.Method.GET, GET_URL, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject resp
重试策略
,但它不起作用。代码如下:
JsonObjectRequest getReq = new JsonObjectRequest(Request.Method.GET, GET_URL, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//bluh..
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<>();
headers.put("Authorization", token);
return headers;
}
};getReq.setRetryPolicy(new DefaultRetryPolicy(
0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
AppController.getInstance().addToRequestQueue(getReq);
JsonObjectRequest getReq=newjsonobjectrequest(Request.Method.GET,GET_URL,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
//蓝色。。
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
}){
@凌驾
公共映射getHeaders()引发AuthFailureError{
HashMap headers=新的HashMap();
headers.put(“授权”,令牌);
返回标题;
}
};getReq.setRetryPolicy(新的DefaultRetryPolicy(
0,
DefaultRetryPolicy.DEFAULT\u最大重试次数,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
AppController.getInstance().addToRequestQueue(getReq);
有时它会重复6次。如何防止这种情况发生?问题在“基本网络”类中(请参见注释掉的方框)
在我的例子中,这个实现违反了RFC并导致了巨大的服务器流量 问题在“基本网络”类中(参见注释掉的方框)
在我的例子中,这个实现违反了RFC并导致了巨大的服务器流量 如果您不想重试或减少
MAX\u重试次数,请尝试删除重试策略,即放入0。默认情况下,MAX\u重试次数为“1”。如果您不想重试或减少MAX\u重试次数,请将default\u BACKOFF\u MULT
传递为0,并尝试删除重试策略,即放入0。默认情况下,MAX\u重试次数为“1”。也可以传递DEFAULT\u BACKOFF\u MULT
为0并重试
if (responseContents != null) {
networkResponse = new NetworkResponse(statusCode, responseContents,
responseHeaders, false, SystemClock.elapsedRealtime() - requestStart);
// if (statusCode == HttpStatus.SC_UNAUTHORIZED ||
// statusCode == HttpStatus.SC_FORBIDDEN) {
// attemptRetryOnException("auth",
// request, new AuthFailureError(networkResponse));
// } else
{
// TODO: Only throw ServerError for 5xx status codes.
throw new ServerError(networkResponse);
}
} else {
throw new NetworkError(networkResponse);
}