我创建了一个接收HTTPS后端的截击请求。
RequestQueue queue = Volley.newRequestQueue(uiCallback.getContext(),
new SSLVerification().getHurlStack(uiCallback.getContext()));
JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,
requestUrl, null, new Response.Listener<JSONObject>() {
...
}
req.setRetryPolicy(new DefaultRetryPolicy(3_600_000, 0, 0));
queue.add(req);
在清单中,我添加了Internet权限,如下所示:
<uses-permission android:name="android.permission.INTERNET" />
只需很短的时间,一切都可以正常工作。
但是如果响应在请求后3分钟到来,那么应用程序什么也得不到。
在后端,我设置了一个断点。 3分钟后,我让后端发送响应给应用程序,但没有任何结果。没有成功,没有错误,没有什么。
如果我在没有SSLVerification
的情况下发出HTTP请求,那么我也会在6分钟后收到响应。相反,超过3分钟的HTTPS请求不想工作。
更改RetryPolicy
以提出许多请求它只是一种解决方法,它不是一个选项。
响应时间太长,无法接收到设备,因此Volley
有一个TimeoutError
。在向服务器发送请求之前,您需要修改默认超时值,如下所示。
req.setRetryPolicy(new RetryPolicy() {
@Override
public int getCurrentTimeout() {
return 360000;
}
@Override
public int getCurrentRetryCount() {
return 5000;
}
@Override
public void retry(VolleyError error) throws VolleyError {
}
});
queue.add(req);
试试这个
req.setRetryPolicy(new DefaultRetryPolicy(90000, 1, 1f));
如果我在没有SSL验证的情况下发出HTTP请求,那么我也会在6分钟后收到响应。相反,超过3分钟的HTTPS请求不想工作。
这可以表明您的服务器是否超时?
Occasionally, Volley fails to return a response from the server