1

我是安卓新手。我有一个休息 API 发布方法。我必须向 API 提供电子邮件和密码。它将提供 json 格式的响应,如下所示

{
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;

        }

最后两个说法不正确。我把它当作一个不应该做的字符串来处理

4

2 回答 2

0

您可以使用以下代码访问 Post Webservice...

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 服务的整个响应作为字符串提供给你。现在您可以根据您的回复解析字符串:喜欢

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

根据您的回复解析。

于 2015-02-05T17:25:30.893 回答
0

我正在使用 https 链接,因为我需要编写一个 TrustManager。默认情况下,Android 不会像 http 那样接受 https。

于 2015-03-05T05:01:05.600 回答