2011-08-04 4 views
1

J'essaye d'envoyer un JSON avec l'adresse email d'information, le prénom et le nom et attend une réponse du serveur pour dire {status: "Créé"} ou {statut: "Renvoyer"} et en fonction de la réponse, il y aurait un message contextuel. Je me demandais ce que j'utilise pour extraire l'information de la classe de statut. Merci! Voici mon code pour accepterrecevoir la réponse JSON (android)

protected void sendJson(final String email, final String firstN, 
     final String lastN) { 
    Thread t = new Thread() { 
     public void run() { 
      Looper.prepare(); // For Preparing Message Pool for the child 
           // Thread 
      HttpClient client = new DefaultHttpClient(); 
      HttpConnectionParams.setConnectionTimeout(client.getParams(), 
        10000); // Timeout Limit 
      HttpResponse response; 
      JSONObject json = new JSONObject(); 
      try { 

       // post in the url 


       HttpPost post = new HttpPost(
         "https://iphone-radar.com/accounts"); 
       json.put("email_address", email); 
       json.put("first_name", firstN); 
       json.put("last_name", lastN); 
       StringEntity se = new StringEntity("JSON: " 
         + json.toString()); 
       se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, 
         "application/json")); 
       post.setEntity(se); 
       response = client.execute(post); 
       /* Checking response */ 
       if (response != null) { 
        String str = response.getEntity().toString(); 
        if (str.equals("Created")) { 
         new AlertDialog.Builder(CreateAccount.this) 
           .setTitle("Account Creation Successful") 
           .setMessage(
             "An activation code has been sent to you. Please check your SPAM folder if you do not receive your activation code email") 
           .setNeutralButton("OK", null).show(); 
        } else if(str.equals("Resend")) { 
         new AlertDialog.Builder(CreateAccount.this) 
           .setTitle("Code Resent") 
           .setMessage(
             "Your activation code has been resent to your email.\n\nIf you are not receiving your activation code, our email is being blocked. Please email us at '[email protected]' and we will manually send you a code.") 
           .setNeutralButton("OK", null).show(); 
        } 


       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 

Répondre

2

Vous devez convertir la réponse à une chaîne, puis créer un JSONObject. Vous pouvez ensuite accéder aux propriétés de l'objet JSON. Essayez ceci:

org.json.JSONObject obj = new org.json.JSONObject(org.apache.http.util.EntityUtils.toString(response.getEntity())); 
        if ("Created".equals(obj.getString("status"))) { 
         new AlertDialog.Builder(CreateAccount.this) 
           .setTitle("Account Creation Successful") 
           .setMessage(
             "An activation code has been sent to you. Please check your SPAM folder if you do not receive your activation code email") 
           .setNeutralButton("OK", null).show(); 
        } else if("Resend".equals(obj.getString("status"))) { 
         new AlertDialog.Builder(CreateAccount.this) 
           .setTitle("Code Resent") 
           .setMessage(
             "Your activation code has been resent to your email.\n\nIf you are not receiving your activation code, our email is being blocked. Please email us at '[email protected]' and we will manually send you a code.") 
           .setNeutralButton("OK", null).show(); 
        } 
+0

Merci pour le conseil, mais quand je l'ai mis dans le débogueur de la ligne org.json.JSONObject obj = new org.json.JSONObject (org.apache.http.util.EntityUtils.toString (response.getEntity())); m'envoie pour attraper (Exception e) Y at-il un problème avec moi ou avec le serveur? Merci encore – Sean

+0

Quelle exception cela donne-t-il? utilisez 'android.util.Log.v (" EXCEPTION "," ["+ e.getMessage() +"] ", e);' pour imprimer l'exception entière dans le journal. Soit l'entité de la réponse est nulle (ce qui est probablement le serveur), soit il y a une erreur de conversion dans la méthode 'EntityUtils.toString'. – Femi

+0

Il indique [La valeur de type java.lang.String ne peut pas être convertie en JSONObject] cela signifie-t-il que j'utilise un mauvais site Web? Merci encore – Sean