androidandroid-volley

BasicNetwork.performRequest: Unexpected response code 429 (android)


I m using Volley library for sending a request to server for Login to an app. it doesn't have any problem until couple of hours ago. but without any reason, i m getting this error "BasicNetwork.performRequest: Unexpected response code 429"

the code is this:

    public void loginRequest(final String username, final String password) {

    String URL = Misc.Server_Url() + "login";
    final StringRequest sr = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            JSONObject obj;
            try {
                obj = new JSONObject(response);
                if (obj.getInt("success") == 1) {
                    startActivity(new Intent(ActivityLogin.this, ActivityArticles.class));
                    finish();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("Content-Type", "application/x-www-form-urlencoded");
            return params;
        }

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("username", username.trim());
            params.put("password", password);
            return params;
        }

    };
    RetryPolicy policy = new DefaultRetryPolicy(2 * 1000, 2, 2);
    sr.setRetryPolicy(policy);
    AppController.getInstance().addToRequestQueue(sr);
}

I have searched in Wikipedia for this error (429) and i find that it means : "The user has sent too many requests in a given amount of time"

from server side(php) for more security if from an ip get more than for example 60 request within 10 second it will block that ip for a while... and client get 429 error code. i m wondering how it will occure when i send a single request to server same as above code!!! and in policy i set the try to 2 times Not more than that. i dont know why when i send this request i get error 429. means you have send 60 request within limited period of time.

do you know how to solve this problem? thanks in advance...


Solution

  • the reason was coz of caching system in server. if we send new request each time, it works fine. but if our request use from caching strategy system in server... it occur 429 error number...