Volley:超时错误

3
我想从一个URL获取一些数据,但服务器非常慢... 所以每当我使用volley获取数据时,我会得到TimeOutError, 有没有办法控制volley尝试获取数据的时间,因为服务器很慢...它需要一点时间 而且我还想持续运行这个请求来检查数据,我计划使用Timer...使用Timer来不断检查数据是否可行吗?
以下是我的volley请求...它适用于其他URL。
public void checkData() {
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.i("Response",response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.i("Response",error.toString());
                }
            }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> map = new HashMap<String,String>();
            map.put("deviceID","none");
            return map;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}

我需要在应用程序内部不断调用这些函数。

更新

我使用了

tringRequest.setRetryPolicy(new DefaultRetryPolicy(
            30000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

现在这个请求可以成功,我想让它在我的应用中持续进行...那么最好的方法是什么?


尝试这个 - Harshad Prajapati
4个回答

2
您可以使用setRetryPolicy来控制Volley请求的超时时间。
stringRequest.setRetryPolicy(new DefaultRetryPolicy(
        YOUR_TIMEOUT_MS, 
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

Have a look at this Qus.


0
StringRequest request = new StringRequest(Request.Method.GET, requestURL, stringListener, errorListener);
        request.setRetryPolicy(new DefaultRetryPolicy(
                30000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        addToRequestQueue(request);

// 这段代码将帮助增加Volley请求的时间,请尝试。


谢谢,它运行得很好。现在你能告诉我在应用程序内部反复调用这个请求的最佳方法是什么吗? - Hena Shiekh
尝试创建一个方法,使用发送请求URL、字符串监听器和错误监听器来调用Volley,并继续调用该方法。 - Mohit Kalia
我会通过这样做获得什么?你能举个好的例子吗?请编辑你的回答。 - Hena Shiekh

0

添加以下4行代码以将Android Volley的超时时间增加到60秒

StringRequest myRequest   

或者

JsonObjectRequest myRequest

.

RetryPolicy policy = new DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
myRequest.setRetryPolicy(policy);

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(myRequest);

0

这段代码将有助于增加Volley请求的时间,请尝试并解决Volley:TimeOutError。

stringRequest.setRetryPolicy(new DefaultRetryPolicy(
    30000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接