2017-06-04 3 views
0

Je pense que JSONException ne fonctionne que lorsque ma demande échoue mais lorsque la requête est valide (nom d'utilisateur valide, mot de passe), elle doit me rediriger vers une autre activité, mais une exception JSON s'affiche.JSONException en cas de succès

Affiche la chaîne JSON reçue du serveur plutôt que de me rediriger vers une autre activité.

Ceci est ma fonction onResponse

 @Override 
     public void onResponse(String response){ 
      try { 
       JSONObject volleyResponse = new JSONObject(response); 

       boolean success  = volleyResponse.getBoolean("success"); 
       String message  = volleyResponse.getString("message"); 

       String UUID  = volleyResponse.getString("unique_user_id"); 
       String LLOGIN = volleyResponse.getString("last_login"); 
       String RDATE = volleyResponse.getString("registration_date"); 
       String MONEY = volleyResponse.getString("money"); 

       if(success){ 
        Intent intent = new Intent(Authentication.this, Mainpage.class); 
        intent.putExtra(KEY_USERNAME, strUsername); 
        intent.putExtra(KEY_UUID, UUID); 
        intent.putExtra(KEY_LLOGIN, LLOGIN); 
        intent.putExtra(KEY_RDATE, RDATE); 
        intent.putExtra(KEY_MONEY, MONEY); 
        startActivity(intent); 
       } 
      } catch(JSONException e) { 
       response = response.replace("\"", ""); 
       response = response.replace("status:false,message:", ""); 
       response = response.replace("{", ""); 
       response = response.replace("}", ""); 
       messageText.setText(response); 
      } 
     } 

Réponse JSON quand il est succès:

{"unique_user_id":"4e99a28a-0cb2-30a9-ac51-ccd4629bcef1","last_name":"therealaxis","password":"$2a$10$9qRjW\/vJreCQg3u5dO6eW.8PhZBTpGaPNK5qRIYP.XTx2PVY1yrOi","last_login":"1 week ago","registration_date":"1 week ago","money":"100.00","success":true} 
+0

Votre réponse n'a pas de chaîne de message, donc une exception JSON est levée – petul

+0

Elle a une chaîne de message quand elle a échoué, mais en cas de succès elle vous montre simplement vos statistiques, et une vraie clé de succès [booléen]. –

+0

Oui, mais vous essayez toujours d'accéder à l'attribut de message. Même si ça a réussi. À ce moment-là, il saute directement dans votre bloc catch – petul

Répondre

0

Votre réponse JSON n'a pas de chaîne de message, donc un JSONException est jeté. Si vous voulez simplement accéder à l'attribut de message au cas où il est présent, utilisez JSONObject.has avant d'y accéder.