Arduino отправляет POST в Slack WebHook - PullRequest
0 голосов
/ 10 июня 2018

У меня есть настройка канала Slack с WebHook, в основном я могу запустить POST и отправить сообщение на мой канал.Все отлично работает при использовании инструмента HTTP на моем рабочем столе, но я не могу отправить POST от Arduino UNO + Ethernet Shield.

Это мой код.Да, я делюсь своим webHookURL, не беспокойтесь, это всего лишь тест: -)

String PostData = "{\"text\": \"Agora Vai\"}";

Serial.println(PostData);

client.println("POST /services/TAXFFU91T/BAXFMF8BF/LPH1b60RsQpOGvur2ZNn0zpz HTTP/1.1");
client.println("Host: hooks.slack.com");
client.println("User-Agent: Arduino/1.0");
client.println("Connection: close");
client.println("Content-Type: application/json");
client.print("Content-Length: ");
client.print(PostData.length());
client.println("\n");
client.println(PostData);
client.println("");

И я получаю HTTP 400:

HTTP/1.1 400 Bad Request
Server: CloudFront
Date: Sun, 10 Jun 2018 02:30:37 GMT
Content-Type: text/html
Content-Length: 556
Connection: close
X-Cache: Error from cloudfront
Via: 1.1 b7a41f8635d9e8e6499fbcc9612f2ec5.cloudfront.net (CloudFront)
X-Amz-Cf-Id: z8WMFOiFRe1nZnSzNbFdSIGriOhh0vv1TxbxFrkuZ9JUoPnssnBbrQ==

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>400 ERROR</H1>
<H2>The request could not be satisfied.</H2>
<HR noshade size="1px">
Bad request.

Команда поддержки Slack ответила мне, что это может быть неправильно сформированный POST, но я не вижу, где.

Есть идеи?

1 Ответ

0 голосов
/ 10 июня 2018

кажется, что формат объекта JSON не верен ... вы можете поделиться объектом, который передается слабым веб-зацепкам, что поможет понять далее. Просто посмотрите на приведенный выше код Переменная postData не в формате JSON - что вызывает HTTP400 Bad Request, вы можете использовать другую библиотеку, такую ​​как #include и проверить ...

Проверка слабого webhook с помощью запроса curl дает правильный вывод. Вы можете проверить это на слабом канале

cURLЗапрос: curl -X POST -H 'Тип содержимого: application / json' \ --data '{"text": "Это строка текста. \ NА вот и другая."}' \ https://hooks.slack.com/services/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

    https://hooks.slack.com/services/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
    10 June 2018, 03:04 UTC
    Results from running: curl --data {"text":"This is a line of text.\nAnd this is another one."} --header Content-type: application/json --request POST https://hooks.slack.com/services/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 
    Response Header
    HTTP/1.1 200 OK
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: keep-alive
    Date: Sun, 10 Jun 2018 03:04:33 GMT
    Server: Apache
    Vary: Accept-Encoding
    X-Slack-Backend: h
    Referrer-Policy: no-referrer
    Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    X-Frame-Options: SAMEORIGIN
    Access-Control-Allow-Origin: *
    X-Via: haproxy-www-19gm
    X-Cache: Miss from cloudfront
    Via: 1.1 a9ced60f02a91a154a8631077a254a91.cloudfront.net (CloudFront)
    X-Amz-Cf-Id: XAQZ5ZSfnLCz_wOxmNbma2Q0q0GUZM_uC052kTuVglGJmGvo8AxIpg==

    Response Body
    ok
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...