我正在尝试使用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);
答案 0 :(得分:3)
我也有这个问题。 它发生是因为凌空参数缓存。 尝试使用以下命令清理缓存:getCache()。clear(); 即:
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.getCache().clear();
requestQueue.add(stringRequest);