【问题标题】:Java - Sending Message to Slack WebhookJava - 向 Slack Webhook 发送消息
【发布时间】:2019-07-04 09:20:47
【问题描述】:

我正在尝试使用 Slack 传入 webhook 发送消息。我有以下代码。它运行,但是当我检查我的松弛时,没有消息。谁能看到我可能做错了什么。

public class SlackTest {

    static String web_hook_url = "https://hooks.slack.com/services/***********/******************";

    public static void main(String[] args) {


        CloseableHttpClient client = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(web_hook_url);

        try {
            String json = "{\"name\": John}";
            System.out.println(json);
            StringEntity entity = new StringEntity(json);
            httpPost.setEntity(entity);
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-type", "application/json");

            client.execute(httpPost);

            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

}

【问题讨论】:

  • 我认为你的错误处理不足以看到 API 错误。 IOException 只会在出现低级错误时引发(例如,没有连接到服务器)。看这里stackoverflow.com/questions/32434947/…
  • 您想要获取 API 的响应并检查它是否有错误,例如HttpResponse response = client.execute(httpPost);
  • 查看此答案以了解如何阅读回复:stackoverflow.com/questions/14024625/…
  • 我真的想通了。不过谢谢!
  • 太棒了。愿意将解决方案发布为答案吗?

标签: java webhooks slack-api


【解决方案1】:

我首先使用 Postman 来测试发送消息。然后使用 Postman 生成相应的 Java 代码。然后稍微调整一下代码,得到以下结果。 . .

OkHttpClient client2 = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{ \"text\" : \"more text"\" }");
            Request request2 = new Request.Builder()
            .url("https://hooks.slack.com/services/********/*********/***************")
                    .post(body)
                    .addHeader("Content-Type", "application/json")
                    .addHeader("Accept", "*/*")
                    .addHeader("Cache-Control", "no-cache")
                    .addHeader("Host", "hooks.slack.com")
                    .addHeader("accept-encoding", "gzip, deflate")
                    .addHeader("Connection", "keep-alive")
                    .addHeader("cache-control", "no-cache")
                    .build();
Response response2 = client2.newCall(request2).execute();

【讨论】:

  • 你好。你能指出我从 Postman 生成 Java 代码的资源吗?。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 2021-08-08
  • 2018-12-30
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多