1

次のコードで http 応答を受信しようとしています。

public void httpRes (){
try {
    HttpClient client = new DefaultHttpClient();
    String postURL = "http://validate.jsontest.com/";
    HttpPost post = new HttpPost(postURL);
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("user", "kris"));
        params.add(new BasicNameValuePair("pass", "xyz"));
        UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params, HTTP.UTF_8);
        post.setEntity(ent);
        HttpResponse responsePOST = client.execute(post);
        HttpEntity resEntity = responsePOST.getEntity();
        if (resEntity != null) {
            Log.i("RESPONSE",EntityUtils.toString(resEntity));
        }
} catch (Exception e) {
    e.printStackTrace();
}}

エラーが発生しました -

LogCat ログ:

09-12 21:48:58.099: INFO/RESPONSE(28485): {
        "error": "No JSON to validate. Please post JSON to validate via the json parameter.",
        "validate": false
        }

GET 要求セットからの応答を受信しようとしました - すべて問題ありませんでしたが、さまざまな POST コードを POST 要求しようとしたときに、応答が得られません! 何が問題ですか?助けが必要。

私も試しました:

Map<String, String> comment = new HashMap<String, String>();
comment.put("password", "password");
comment.put("avatar", "httpssssssss");

String json = new GsonBuilder().create().toJson(comment, Map.class);
HttpResponse response = makeRequest("http://validate.jsontest.com/", json);
//Log.w(TAG, EntityUtils.toString(response));
try {
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();
    String sss= convertStreamToString(is);
    Log.w("SSSSSSSSSSSSSSSSSS", sss);
} catch (Exception ex) {
    Log.w("Exception exxx", ex);
}
public static HttpResponse makeRequest(String uri, String json) {
        try {
            HttpPost httpPost = new HttpPost(uri);
            httpPost.setEntity(new StringEntity(json));
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-type", "application/json");
            return new DefaultHttpClient().execute(httpPost);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

private static String convertStreamToString(InputStream is) {

        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append((line + "\n"));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }

それで、問題は何ですか?

4

3 に答える 3

1

http://validate.jsontest.comContent-Typeは、ヘッダーが に設定されていない限り、POST 要求を拒否しapplication/x-www-form-urlencodedます。

于 2014-10-03T16:49:52.947 に答える
0

コード行をGETする

HttpPost httpPost = new HttpPost(uri);

する必要があります

HttpPost httpPost = new HttpPost(uri+"?json="+json);

その下の3行は必要ないと思います。

POSTを介して、そのようにjsonパラメーターを渡す必要があります。

params.add(new BasicNameValuePair("json", json));

jsonがjsonデータを含む変数であると仮定します。

次のようなブラウザでGETメソッドをテストできます。http: //validate.jsontest.com/ ?json = {validate:true}

于 2012-09-12T15:09:26.133 に答える
-1

検証するには、有効な json を URL http://validate.jsontest.com/に投稿する必要があります。あなたがしていることは、基本的にjson形式ではないURLに投稿リクエストを送信することです。それをjsonにエンコードしてから、検証URLに送信する必要があります。

于 2012-09-12T15:06:05.637 に答える