JAVA中的CURL - 无法解析主机:POST

时间:2015-05-21 11:10:24

标签: java post curl httpclient processbuilder

我已经成功地通过安装Windows的curl从我的Windows PC中的CMD执行CURL命令。同样,通过使用ProcessBuilder和Process创建操作系统进程,我已经能够让他们在我的JAVA应用程序中工作。特别是,我需要执行这里给出的KissFlow中使用的REST API端点命令:https://support.kissflow.com/support/solutions/articles/179582-understanding-the-rest-api-end-points

问题:我能够使用GET方法执行命令。 ProcessBuilder pb = new ProcessBuilder("curl","-H","api_key:<XXXX>","-X","GET","http://<XXXX>.appspot.com/api/1/Employee/list/p1/50

然而,当使用POST命令时 ProcessBuilder pb = new ProcessBuilder("curl","-H","api_key:<XXXX>","-X ","POST","--data-urlencode","First Name=XXXX","http://<XXXX>.appspot.com/api/1/Employee/submit");,我收到错误消息: curl:(6)无法解析主机:POST 返回流程的输入流 <html><title>Error 400 (Bad Request)!!1</title></html>

这实际上在从CMD执行时非常有效。

我在这里尝试了所有相关问题的建议。任何帮助表示赞赏。感谢。

编辑:来自CURL的任何其他方法也可以接受。

1 个答案:

答案 0 :(得分:0)

根据@ GyroGearless的想法,尝试使用下面的示例代码通过方法GET和POST使用Apache的HttpClient类从URL检索响应。我认为使用HttpClient,你将拥有比使用CURL更多的“力量”。

您需要 commons-httpclient.jar 及其依赖项: commons-codec commons-logging 。你会在http://commons.apache.org/downloads/

找到这些罐子
(...)
String url = "http://<XXXX>.appspot.com/api/1/Employee/list/p1/50";
HttpClient client = new HttpClient();
GetMethod get = new GetMethod(url);
client.executeMethod(get);
System.out.println(new String(get.getResponseBody()));
get.releaseConnection();

url = "http://<XXXX>.appspot.com/api/1/Employee/submit";
PostMethod post = new PostMethod(url);
post.addParameter("id", "10");
client.executeMethod(post);
System.out.println(new String(post.getResponseBody()));
post.releaseConnection();
(...)

如您所见,在PostMethod部分中,我们在请求中发送参数。也许你不需要这个......