【发布时间】:2015-05-21 11:10:23
【问题描述】:
通过安装适用于 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 的替代方法来做同样的事情也是可以接受的。
【问题讨论】:
-
旁注:尽可能避免在 Java 中生成外部工具。 Commons::HttpClient 可以用纯 Java 做!
-
正如@GyroGearless 所说,使用HttpRequest 而不是curl。在 java 中使用 curl 真的很不愉快 ;-)
-
我还没有完全尝试过 HttpClient。您能否发布正确的方法来使用上述命令?
标签: java post curl httpclient processbuilder