2015-02-05 71 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。