参考:https://blog.youkuaiyun.com/lonewolf521125/article/details/46724373
问题描述:使用volley进行post请求删除数据,但是由于网络不好或者上传时间较长,导致第一次请求的结果未返回,就进行重试,导致第一次的结果丢失,第二次请求进行请求的时候,实际上第一次请求已经删除了数据,所以第二次就返回操作失败。
问题分析:
经过上网查找相关信息,发现这是由于volley内容的重连机制导致的,volley重连机制类RetryPolicy,里面默认超时2.5秒,重连次数一次,
解决方案:
给request设置自己定义的重连策略,代码如下:
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
20000,//默认超时时间,应设置一个稍微大点儿的,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,//默认最大尝试次数
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
));
instance.addRequest(stringRequest, tag);