2017-01-05 2 views
0

AndroidのVolleyを使用して私のサーバーにログインパラメータを投稿しようとしています。初めてログインするとparamsを送信しますが、ログアウトして再度ログインしようとすると、 getparamsではなく、以前のログインパラメータをサーバに送信します。2回目のgetParams()を呼び出さないボレー

私が初めてで、それはログstatemantを印刷し、ログステートメントを試みたが、それはなりません

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

あなたは毎回のリクエストを作成している、半分のコードが存在しているため、他のすべてのものが正常に見える、また、私はあなたが要求秒の時間を作っていないと思います他の場所でログやデバッグを入れて確認し、 – Piyush

+0

何あなたのエラーログ? – Ricardo

+0

は 'getParams()'の 'Log.d(" ... ")'を最初に 'getParams()'メソッドの最初の行に 'breakpoint'を使用し、 1つの例外があり、メソッドがスローされる可能性があります。また、すべてのcatch例外で 'Log.d(" ... ")'を実行して何が起こったかを確認します。 – Saeid

答えて

1

二度目に私もこの問題を抱えていました。 これは、ボレーのパラメータキャッシュが原因で発生しました。 コマンドを使用してキャッシュをクリーニングしてください。getCache()。clear(); すなわち:

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

同じ問題があり、これが完璧です!どうもありがとう! – basti12354

関連する問題