2015-02-05 21 views
1

我是一個新的android。我有一個休息的API發佈方法。我必須提供電子郵件和密碼給API。它將提供這將是JSON格式像下面在post方法中處理json響應android

{ 
error: "This email is already registered " 
status: 404 
} 

格式的原始響應將在形式如下

{"error":"This email is already registered\n","status":404} 

我發送的名稱值對成功的響應,但我不不知道如何處理這種類型的迴應。任何人都可以幫我解決這個問題嗎?這裏是我的代碼

protected String doInBackground(String... params) { 

      //HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("https://zigron.goabode.com/api/registration/new"); 
     PostMethod post = new PostMethod("https://zigron.goabode.com/api/registration/new"); 

     String resp=null; 

     try 
     { 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
      nameValuePairs.add(new BasicNameValuePair("email", email_s)); 
      nameValuePairs.add(new BasicNameValuePair("password", pwd_s)); 

      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      System.out.println(nameValuePairs); 

      resp=post.getResponseBodyAsString(); 
      return resp; 

     } 

最後兩條語句不正確。我處理,作爲一個字符串,它不應該做的

+0

正如你所說,你確實取得了成功。之前。什麼是狀態代碼。因此,您可以比較'resp'字符串的狀態並查找是否成功 – MDMalik 2015-02-05 17:02:53

回答

0

您可以使用下面的代碼來訪問web服務後...

public static List<NameValuePair> addMediaParameter() { 
    List<NameValuePair> params = new LinkedList<NameValuePair>(); 
    params.add(new BasicNameValuePair("offset", "0")); 
    params.add(new BasicNameValuePair("length", "100")); 
    // params.add(new BasicNameValuePair("limit", "3")); 
    return params; 
} 

public static String responseRetriever(String url, 
     List<NameValuePair> values) { 
    try { 
     String paramString = ""; 
     if (values != null) 
      paramString = URLEncodedUtils.format(values, "utf-8"); 

     HttpClient httpclient = new DefaultHttpClient(); 
     HttpGet httpget = new HttpGet(url + paramString); 
     HttpResponse response; 
     response = httpclient.execute(httpget); 
     HttpEntity entity = response.getEntity(); 

     if (entity != null) { 
      String data = EntityUtils.toString(entity); 

      if (data != null && data.length() > 0)     
       return data; 
      else 
       return null; 
     } 
    } catch (Exception e) { 
     Log.e("responseRetriever", e.toString()); 
    } 

    return null; 
} 



String response_data = responseRetriever("yourURL", addMediaParameter()); 

這RESPONSE_DATA會給你的web服務作爲字符串的整體響應。現在,您可以根據您的回覆解析字符串:Like

JSONObject jsonresponse = new JSONObject(response_data); 
String error_message = jsonresponse.getString("error"); 

根據您的回覆進行解析。

+0

謝謝,但我的服務會發送一個JSONObject作爲響應。它不會發送字符串。我需要獲取JSONOBject並根據需要解析它。 – 2015-02-05 19:46:40

+0

response_data是您的JSONObject 的字符串,下面的代碼會將該字符串轉換爲JSONObject JSONObject jsonresponse = new JSONObject(response_data); 這裏我解析你的JSONObject來獲取JSONObject的值。 String error_message = jsonresponse.getString(「error」); 希望這會幫助你。 – Shadik 2015-02-06 18:57:23

+0

感謝您的回答 – 2015-03-05 05:01:40

0

我正在使用https鏈接,因爲我需要編寫一個TrustManager。默認情況下,Android不會接受https。