Volley没有第二次调用getParams()

时间:2017-01-05 14:22:52

标签: android android-volley

我正在尝试使用Android中的Volley将登录参数发布到我的服务器。首次登录时发送params,但在我注销并尝试再次登录后,它不会调用getparams,而是发送以前的登录到服务器的参数。

我尝试使用日志语句,第一次打印日志状态,但是第二次它赢了

StringRequest stringRequest=new StringRequest(Request.Method.POST,LOGIN_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    if (response!=null){
                        Log.d("loginResponse", response);
                        try {
                            JSONObject object= new JSONObject(response);
                            uid=object.getString(KEY_UR_ID);
                            firstName=object.getString(KEY_F_NAME);
                            lastName=object.getString(KEY_L_NAME);
                            fullName=firstName+" "+lastName;
                            email=object.getString(KEY_EMAIL);
                            phone=object.getString(KEY_PHONE);
                            dob=object.getString(KEY_DOB);
                            gender=object.getString(KEY_GENDER);
                            userType=object.getString(KEY_UTYPE);
                            address=object.getString(KEY_U_ADDRESS);
                            pincode=object.getString(KEY_U_PINCODE);

                            // Inserting row in users table
                            db.addUser(uid, firstName, lastName,email,phone,gender,userType,address,pincode);
                            // user successfully logged in
                            // Create login session
                            session.setLogin(true);
                            loginProgress.dismiss();
                            onBackPressed();

                        } catch (JSONException e) {
                            loginProgress.dismiss();
                            Toast.makeText(getApplicationContext(),"Invalid username/password",Toast.LENGTH_LONG).show();
                            e.printStackTrace();
                        }

                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            String message = null;
            if (error instanceof NetworkError) {
                message = "Cannot connect to Internet...Please check your connection!";
            } else if (error instanceof ServerError) {
                message = "The server could not be found. Please try again after some time!!";
            } else if (error instanceof AuthFailureError) {
                message = "Invalid username/password";
            } else if (error instanceof ParseError) {
                message = "Parsing error! Please try again after some time!!";
            } else if (error instanceof TimeoutError) {
                message = "Connection TimeOut! Please check your internet connection.";
            }
            Toast.makeText(getApplicationContext(),message,Toast.LENGTH_SHORT).show();

            loginProgress.dismiss();
        }
    })
    {
        @Override
        protected Map<String,String> getParams(){

            Map<String,String> params = new HashMap<String, String>();

            //This does not appear in the log for second time login
            Log.d("Params","Does it assign params?") ;
            params.put(KEY_EMAIL, inputEmail);
            params.put(KEY_PASSWORD, inputPassword);
            return params;
        }


        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String,String> header = new HashMap<String, String>();
            header.put("Content-Type","application/x-www-form-urlencoded");
            return header;
        }
        @Override
        protected String getParamsEncoding() {
            return "utf-8";
        }
    };
    MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);

1 个答案:

答案 0 :(得分:3)

我也有这个问题。 它发生是因为凌空参数缓存。 尝试使用以下命令清理缓存:getCache()。clear(); 即:

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