Slack incoming web hook 并让它与 HTTPPOST 一起工作
Slack incoming web hook and getting it to work with HTTPPOST
团队,我需要帮助向 Slack 发布一个简单的 Json 请求。我设置了配置并使用了 URL。他们要我添加 payload={"Text":"Some String"}
我正在使用以下代码:
HttpPost httppost = new HttpPost("slackURL");
httppost.addHeader("Content-type", "application/json");
StringEntity params = new StringEntity("payload={\"text\" : \""+message+"\"}","UTF-8");
params.setContentType("application/json");
httppost.setEntity(params);
错误消息:
HTTP/1.1 500 Server Error
Response content length: -1
Chunked?: true
来自 Slack 的回复:
Our logs indicate that the content isn't being posted to the payload HTTP POST/form parameter.
改变
StringEntity params = new StringEntity("payload={\"text\" : \""+message+"\"}","UTF-8");
到
StringEntity params = new StringEntity("{\"text\" : \""+message+"\"}","UTF-8");
(去掉 "payload=",因为它无效 JSON。)
根据 the documentation,当 POST 到传入的 webhook 时,您有两种选择 URL:
- 您可以在请求正文中将数据作为 JSON 发送。
- 您可以发送具有 JSON 值的
payload
表单编码参数。
你正在做一些介于两者之间的事情......你声称要发送 JSON 编码的正文(通过 Content-Type: application/json
)但你没有发送有效的 JSON。 (您发送的内容看起来更像是表单编码选项,但您实际上并未对其进行表单编码。)
附带说明:我强烈建议您使用真实的库来构建您的 JSON。手工操作很容易出错。例如,如果您尝试对消息 A wise man once said "You shouldn't try to encode JSON by hand."
进行编码,您将收到一个错误,因为您生成了无效的 JSON。
团队,我需要帮助向 Slack 发布一个简单的 Json 请求。我设置了配置并使用了 URL。他们要我添加 payload={"Text":"Some String"}
我正在使用以下代码:
HttpPost httppost = new HttpPost("slackURL");
httppost.addHeader("Content-type", "application/json");
StringEntity params = new StringEntity("payload={\"text\" : \""+message+"\"}","UTF-8");
params.setContentType("application/json");
httppost.setEntity(params);
错误消息:
HTTP/1.1 500 Server Error
Response content length: -1
Chunked?: true
来自 Slack 的回复:
Our logs indicate that the content isn't being posted to the payload HTTP POST/form parameter.
改变
StringEntity params = new StringEntity("payload={\"text\" : \""+message+"\"}","UTF-8");
到
StringEntity params = new StringEntity("{\"text\" : \""+message+"\"}","UTF-8");
(去掉 "payload=",因为它无效 JSON。)
根据 the documentation,当 POST 到传入的 webhook 时,您有两种选择 URL:
- 您可以在请求正文中将数据作为 JSON 发送。
- 您可以发送具有 JSON 值的
payload
表单编码参数。
你正在做一些介于两者之间的事情......你声称要发送 JSON 编码的正文(通过 Content-Type: application/json
)但你没有发送有效的 JSON。 (您发送的内容看起来更像是表单编码选项,但您实际上并未对其进行表单编码。)
附带说明:我强烈建议您使用真实的库来构建您的 JSON。手工操作很容易出错。例如,如果您尝试对消息 A wise man once said "You shouldn't try to encode JSON by hand."
进行编码,您将收到一个错误,因为您生成了无效的 JSON。