我有一个硒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,所以很明显我做错了事。
答案 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();