【问题标题】:How do I convert this curl request to Apache HttpClient java code?如何将此 curl 请求转换为 Apache HttpClient java 代码?
【发布时间】:2013-07-25 20:31:02
【问题描述】:

我正在尝试用 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]

有谁知道问题出在哪里?

【问题讨论】:

标签: java apache http post http-post


【解决方案1】:

由于某种原因,如果我替换它会起作用:

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 post with parameters not working

【讨论】:

  • 我的猜测是当使用 UrlEncodedFormEntity 时,键/值对被添加到请求 URL 中。但是,远程服务器会在 StringEntity 所做的 JSON 格式的请求正文中查找键/值对。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-30
  • 2022-08-06
  • 2020-04-28
  • 2016-04-12
  • 2017-10-31
  • 2021-07-08
相关资源
最近更新 更多