HTTPClient收到错误拒绝到节点JS服务器(奇怪的行为)

时间:2018-06-25 14:12:17

标签: node.js arduino esp8266 arduino-esp8266 esp32

问题:在运行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();
}

Node 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

1 个答案:

答案 0 :(得分:0)

尝试使用JSON发送数据,您可以使用__attribute__库。

然后在ArduinoJson方法中使用类似的代码。

loop()