Проблема: для первой минуты выполнения сценария ESP32 запрос post
создает HTTPC_ERROR_CONNECTION_REFUSED
, и, следовательно, данные не попадают на сервер. После первой минуты несколько запросов теряются, но по большей части запросы достигают сервера каждые 2 с ~ (как и должно быть).
Функция отправки данных на сервер:
void sendPostData(String data) {
// Send the post data to the server
http.begin(SERVER_IP); // Begin the HTTP connection
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpResponseCode = http.POST("val=" + data);
http.writeToStream(&Serial);
http.end();
}
Узел JS сервер:
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/', function (req, res) {
console.log(req.body);
res.end();
});
app.listen(80);
Если я использую тестовый веб-сайт для получения запросов POST, которые не принадлежат моему серверу, например, requestcatcher.com
, то никакие запросы не теряются. И наоборот, если я использую веб-сайт для отправки запросов POST, таких как hurl.eu
, то у моего сервера нет проблем.
Это почтовый запрос, который отправляет ESP32:
POST / HTTP/1.0
Host: sadasdasd.requestcatcher.com
Connection: close
Accept-Encoding: identity;q=1,chunked;q=0.1,*;q=0
Connection: close
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
User-Agent: ESP32HTTPClient