1

私はアンドロイドが初めてです。Rest API post メソッドがあります。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;

        }

最後の 2 つのステートメントは正しくありません。やってはいけない文字列として扱っています

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

TrustManager を作成する必要があるため、https リンクを使用しています。Android はデフォルトで https を受け入れませんが、http は受け入れます。

于 2015-03-05T05:01:05.600 に答える