网络访问一直使用的volley,前几天调试,出现一个问题,其他接口都可以访问成功,有一两个接口调用,会重复调用两次,访问的方法只有一次,volley在一定时间内访问不到请求,会重新请求,所以,为了防止这样的问题,可以将默认的超时时间延长,尽量比服务器最大响应时间多一些,防止服务端返回错误信息时已断开连接
/**
* Post
*
* @param url 访问url
* @param requestTag 请求Tag,用于停止请求
* @param paramkeys Post参数的key
* @param paramValues Post参数的value
*/
public void StringRequestPostMethod(String url, String requestTag, final ArrayList<String> paramkeys, final ArrayList<String> paramValues
, Response.Listener<String> listener, Response.ErrorListener errorListener) {
result = "";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, listener, errorListener) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
if (paramkeys != null) {
paramkeys.add("token");
paramValues.add(StaticParameter.loginToken);
for (int i = 0; i < paramkeys.size(); i++) {
map.put(paramkeys.get(i), paramValues.get(i));
}
}
return map;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(40*1000,0,0f));
stringRequest.setTag(requestTag);
L.e("getCurrentRetryCount"+ stringRequest.getRetryPolicy().getCurrentRetryCount());
L.e("getCurrentTimeout"+ stringRequest.getRetryPolicy().getCurrentTimeout());
mRequestQueue.add(stringRequest);
}
核心代码为:
stringRequest.setRetryPolicy(new DefaultRetryPolicy(30*1000,1,1f));