Volley RequestQueue Timeout

前端 未结 5 913
执笔经年
执笔经年 2020-12-04 15:27
RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());
mRequestQueue.add(new JsonObjectRequest(Method.GET, cityListUrl, null, new Listener<         


        
5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-04 16:22

    You should set the request's RetryPolicy:

    myRequest.setRetryPolicy(new DefaultRetryPolicy(
                    MY_SOCKET_TIMEOUT_MS, 
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    

    This would change your code to:

    RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    JsonObjectRequest request = new JsonObjectRequest(Method.GET, cityListUrl, null, new
        Listener() {
            public void onResponse(JSONObject jsonResults) {
                //Any Call
            }
        }, new ErrorListener(){
            public void onErrorResponse(VolleyError arg0) {
                //Any Error log
            }
        }
    );
    
    
    int socketTimeout = 30000;//30 seconds - change to what you want
    RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
    request.setRetryPolicy(policy);
    mRequestQueue.add(request);
    

    If you are only just getting started with Volley, you might want to instead consider droidQuery, which is a little easier to configure:

    int socketTimeout = 30000;
    $.ajax(new AjaxOptions().url(cityListUrl)
                            .timeout(socketTimeout)
                            .success(new Function() {
                                public void invoke($ d, Object... args) {
                                    JSONObject jsonResults = (JSONObject) args[0];
                                    //Any call
                                }
                            })
                            .error(new Function() {
                                public void invoke($ d, Object... args) {
                                    AjaxError error = (AjaxError) args[0];
                                    Log.e("Ajax", error.toString());
                                }
                            }));
    

提交回复
热议问题