JAVA 中的 CURL - 无法解析主机:POST
CURL in JAVA - Could not resolve host : POST
通过为 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 的任何替代方法都可以接受。
根据@GyroGearless 的想法,尝试使用下面的示例代码通过 GET 方法和 POST 使用 Apache 的 HttpClient class 从 URL 中检索响应。我认为使用 HttpClient 你会比使用 CURL "power" 多得多。
你需要 commons-httpclient.jar 及其依赖项:commons-codec 和 commons -记录。您会在 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 部分,我们在请求中发送参数。也许你不需要这个....
您也可以使用 Visual studio,我们还创建了一个 post 方法来拒绝 kissflow 中的请求。只是让您知道您也可以在 visual studio.
中执行此操作
通过为 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 的任何替代方法都可以接受。
根据@GyroGearless 的想法,尝试使用下面的示例代码通过 GET 方法和 POST 使用 Apache 的 HttpClient class 从 URL 中检索响应。我认为使用 HttpClient 你会比使用 CURL "power" 多得多。
你需要 commons-httpclient.jar 及其依赖项:commons-codec 和 commons -记录。您会在 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 部分,我们在请求中发送参数。也许你不需要这个....
您也可以使用 Visual studio,我们还创建了一个 post 方法来拒绝 kissflow 中的请求。只是让您知道您也可以在 visual studio.
中执行此操作