Volley long HTTPS Request从未回复过

问题描述 投票:5回答:3

我创建了一个接收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以提出许多请求它只是一种解决方法,它不是一个选项。

java android https android-volley response
3个回答
3
投票

响应时间太长,无法接收到设备,因此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);

1
投票

试试这个

req.setRetryPolicy(new DefaultRetryPolicy(90000, 1, 1f));

0
投票

如果我在没有SSL验证的情况下发出HTTP请求,那么我也会在6分钟后收到响应。相反,超过3分钟的HTTPS请求不想工作。

这可以表明您的服务器是否超时?

Occasionally, Volley fails to return a response from the server

© www.soinside.com 2019 - 2024. All rights reserved.