2017-01-24 9 views
0

Мое приложение требует логина. Он отлично работает для успешного входа в систему. Но в случае ошибки возвращается ошибка 400, но вызывается только прослушиватель ошибок. Я не могу прочитать код состояния. Я хочу прочитать код ответа об ошибке, чтобы показать конкретный тост ошибки пользователю.Не удалось получить код ответа на ошибку в volley

Мой код: -

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

вы получаете исключение в прослушивателе ответ, что блок улова догоняет за исключением 400. – W4R10CK

+0

Nopes, на ErrorResponse обрабатывает его. Я получаю тост «Недействительные учетные данные», который находится в области ErrorResponse –

+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