Java:发送POST curl命令以松弛状态发送消息

时间:2019-10-11 13:02:23

标签: java curl

我有一个硒Java自动化程序,我需要在我的Java代码中发送以下CURL命令:

curl -X POST -H 'Content-type: application/json' --data '{"text":"Test"}' https://hooks.slack.com/services/XXX/YYY/ZZZ

我尝试了一些在这里找到的解决方案,例如:

String command = "curl -X POST -H 'Content-type: application/json' --data '{"text":"Test"}' https://hooks.slack.com/services/XXX/YYY/ZZZ";
Runtime.getRuntime().exec(command);

还有这个:

HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost("https://hooks.slack.com/services/XXX/YYY/ZZZ");

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("text", "test"));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response = client.execute(post);

脚本可以运行,但是什么也没发生(在Eclipse控制台上没有消息/警告/错误),它只是运行并成功传递,但是消息不是通过Slack通道发送的。如果我在linux终端中运行相同的curl命令,则消息将在Slack上发送。

我仍在学习Java,所以很明显我做错了事。

1 个答案:

答案 0 :(得分:0)

我终于可以工作了:

String[] command = new String[] { "/bin/bash", "-c", "curl -X POST -H 'Content-type: application/json' --data '{\"text\":\"test\"}' https://hooks.slack.com/services/AAA/BBB/CCC"};
Process proc = new ProcessBuilder(command).start();