Volley RequestQueue Timeout

前端 未结 5 882
执笔经年
执笔经年 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:06
    String url = "https://api.joind.in/v2.1/events?start=" + start + "&resultsperpage=20&format=json";
    Log.i("DREG", "onLoadMoreItems: " + url);
    final StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // Add Code Here
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                        if (error instanceof NetworkError) {
                        } else if (error instanceof ServerError) {
                        } else if (error instanceof AuthFailureError) {
                        } else if (error instanceof ParseError) {
                        } else if (error instanceof NoConnectionError) {
                        } else if (error instanceof TimeoutError) {
                            Toast.makeText(getContext(),
                                    "Oops. Timeout error!",
                                    Toast.LENGTH_LONG).show();
                        }
                }
            }
    );
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(
            10000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    requestQueue.add(stringRequest);
    
    0 讨论(0)
  • 2020-12-04 16:19

    Something like this

    RetryPolicy retryPolicy = new DefaultRetryPolicy(
        YOUR_TIMEOUT_MS,
        YOUT_MAX_RETRIES,
        YOUR_BACKOFF_MULT
    );
    
    JsonObjectRequest request = new JsonObjectRequest(...);
    request.setRetryPolicy(retryPolicy);
    

    Or you could implement your own RetryPolicy.

    0 讨论(0)
  • 2020-12-04 16:20

    This is worked for me :

    RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    JsonObjectRequest request = new JsonObjectRequest(Method.GET, cityListUrl, null, new
        Listener<JSONObject>() {
            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);
    
    0 讨论(0)
  • 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<JSONObject>() {
            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());
                                }
                            }));
    
    0 讨论(0)
  • 2020-12-04 16:29
    void RequestVolley() {
    
        // Instantiate the RequestQuee
        RequestQueue queue = Volley.newRequestQueue(getApplication());
    
        //create new volley request
        JsonObjectRequest requestNew = new JsonObjectRequest(Request.Method.GET, Url, null, createMyReqSuccessListener(), createMyReqErrorListener());
    
        //Response.Listener and Error.Listener defined afterwards
    
    
        //first param is TIMEOUT ...integer
        //second param is number of retries ...integer
        //third is backoff multiplier ...integer
    
        requestNew.setRetryPolicy(new DefaultRetryPolicy(6000, 1, 1));
    
        queue.add(requestNew);
    }
    
    private Response.Listener < JSONObject > createMyReqSuccessListener() {
        return new Response.Listener < JSONObject > () {
            @Override
            public void onResponse(JSONObject response) {
    
                //do something
            }
        };
    }
    
    private Response.ErrorListener createMyReqErrorListener() {
        return new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
    
                //do something
            }
        };
    }
    
    0 讨论(0)
提交回复
热议问题