0

これをJavaで送信しようとしています:

curl -H "Content-Type:application/json" -XPOST 'http://www.example.com/foo' -d '{"rootURL": "http://www.subway.com"}'

ここに私が持っているコードがあります:

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://www.example.com/foo");

    post.setHeader("Content-Type", "application/json");

    List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
    urlParameters.add(new BasicNameValuePair("rootURL", "http://www.subway.com"));
    post.setEntity(new UrlEncodedFormEntity(urlParameters));
    client.execute(post);

しかし、私は400エラーが発生しています:

Unexpected character ('r' (code 98)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: org.apache.catalina.connector.CoyoteInputStream@a18ba7b; line: 1, column: 2]

この行を変更すると:

urlParameters.add(new BasicNameValuePair("rootURL", "http://www.subway.com"));

urlParameters.add(new BasicNameValuePair("bootURL", "http://www.subway.com"));

次のエラーが表示されます。

Unexpected character ('b' (code 98)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at [Source: org.apache.catalina.connector.CoyoteInputStream@a18ba7b; line: 1, column: 2]

誰が問題が何であるか知っていますか?

4

1 に答える 1

0

何らかの理由で、次を置き換えると機能します:

List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("rootURL", "http://www.subway.com"));
post.setEntity(new UrlEncodedFormEntity(urlParameters));

と:

post.setEntity(new StringEntity("{\"rootURL\":\"http://www.subway.com\"}", "UTF-8"));

この提案を見つけたリンクは次のとおりですが、理由はわかりません。UrlEncodedFormEntity で動作しない理由を誰か説明できますか?

Android: パラメータを含む HTTP 投稿が機能しない

于 2013-07-25T20:51:15.153 に答える