我从互联网上搜索了很多来设置凌空的请求超时。我最终获得了重试策略的解决方案,但是当研究它没有设置超时时它设置了请求的重试时间,但我不想重试我的请求。我想增加凌空请求超时,以便较慢的网络可以访问数据,凌空超时设置为5秒,这意味着如果网络连接到5秒,它将抛出超时异常。如何设法改变从服务器获得响应的时间。
我的代码是
ProjectHistory.requestQueue = Volley.newRequestQueue(mContext);
int socketTimeout = 30000;//30 seconds - change to what you want
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(policy);
ProjectHistory.requestQueue.add(stringRequest);
我有两个问题 -
(1)它会在30秒后重试请求吗?
(2)如何设置请求超时30秒,以便较慢的网络可以加载数据?
答案 0 :(得分:1)
请在Volley
中查看this个帖子中的超时政策。
这里在
request.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 48,
0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 48 ,第一个参数本身表示超时。如果在政策中提到重试,那么Volley将等待给定时间并且id没有得到响应然后再次尝试。
注意:这里提到的超时是2500ms * 48 = 120000ms = 2分钟
感谢。