2017-01-24 11 views
0

私のアプリケーションではユーザーのログインが必要です。ログインに成功するとうまくいきます。ただし、エラーの場合はエラー400が戻されますが、エラー・リスナーのみが呼び出されます。私はステータスコードを読むことができません。私は、ユーザーに特定のエラートーストを表示するために、エラー応答コードを読みたい。ボレーのエラー応答コードを取得できません

私のコードは次のとおりです。 - が

String SignInURL = "https://xyz/abc"; 

    StringRequest j1 = new StringRequest(Request.Method.POST,SignInURL, new Response.Listener<String>() { 

     @Override 
     public void onResponse(String response) { 
      Toast.makeText(getApplicationContext(),"GG"+response,Toast.LENGTH_LONG).show(); 
      try { 
       JSONObject jsonResponse = new JSONObject(response); 
       Log.e("QWER",""+jsonResponse); 
       Toast.makeText(getApplicationContext(),""+jsonResponse,Toast.LENGTH_LONG).show(); 
        sp = getSharedPreferences(AUTHDATA, Context.MODE_PRIVATE); 
        SharedPreferences.Editor edit = sp.edit(); 
        edit.putString("access_token",jsonResponse.getString("access_token")); 
        edit.putString("token_type",jsonResponse.getString("token_type")); 
        edit.putString("refresh_token",jsonResponse.getString("refresh_token")); 
        edit.putString("scope",jsonResponse.getString("scope")); 
        Log.e("ACCESS_TOKEN",jsonResponse.getString("access_token")); 
        if(jsonResponse.getString("access_token").equals("")){ 
         edit.putBoolean("login",false); 
        }else{edit.putBoolean("login",true);} 
        Intent i = new Intent(getApplicationContext(), HomeActivity.class); 
        startActivity(i); 
        finish(); 


      } catch (JSONException e) { 
       e.printStackTrace(); 
       Toast.makeText(getApplicationContext(), 
         "Error: " + e.getMessage(), 
         Toast.LENGTH_LONG).show(); 
       hidepDialog(); 
      } 
     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 

      Toast.makeText(getApplicationContext(),"Invalid credentials", Toast.LENGTH_LONG).show(); 
      hidepDialog(); 
     } 
    }){ 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 

      HashMap<String, String> hashMap = new HashMap<String, String>(); 
      hashMap.put("Content-Type","application/json; charset=utf-8"); 
      return hashMap; 
     } 

    }; 


    RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); 
    requestQueue.add(j1); 
+0

はErrorResponseがそれを処理している上 は単純に、catchブロックが例外400 – W4R10CK

+0

Nopesでキャッチされていることを、追加します。私はErrorResponseの範囲にある "Invalid Credentials"トーストを受け取ります –

+0

ここにJSONの値を追加します – W4R10CK

答えて

2

最後に、長い闘いの後、それに対する答えを見つけます。あなたが応答リスナーで例外を取得している

@Override 
    public void onErrorResponse(VolleyError error) { 
     int statcod = error.networkResponse.statusCode; 
     switch(statcode){ 
     case 400: 
     //code you want to run for error status 400 
     break; 
     case 500: 
     //code you want to run for error status 400 
     break; 
     default : 
     //default code 
     } 
    } 
+0

簡単なコード、簡単な生活+1。 – Bawa

関連する問題