【发布时间】:2014-12-06 02:31:26
【问题描述】:
我有一个 RESTful API,我可以通过执行以下操作来调用它:
curl -H "Content-Type: application/json" -d '{"url":"http://www.example.com"}' http://www.example.com/post
在 Java 中,当我从 cURL 打印出接收到的请求数据时,我正确地得到了以下数据:
Log: Data grabbed for POST data: {"url":"http://www.example.com/url"}
但是,当我使用 HttpClient/HttpPost 通过 Java 发送 POST 请求时,我得到的数据格式很差,无法从 JSON 中获取键值对。
Log: Data grabbed for POST data: url=http%3A%2F%2Fwww.example.com%2Furl
在 Java 中,我正在这样做:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.example.com/post/");
List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>();
BasicNameValuePair nvp1 = new BasicNameValuePair("url", "http://www.example.com/url);
nameValuePairs.add(nvp1);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse httpresponse = httpclient.execute(httppost);
如何使来自 Java 的请求在数据发送方式方面类似于 cURL?
【问题讨论】:
-
考虑使用 Jersey: jersey.java.net
-
我对 HttpClient/HttpPost 知之甚少,但它们是否将数据作为 JSON 字符串发送?你也不必在标题中设置内容类型吗?