ESP8266 / NodeMCU POST请求返回-1状态代码

时间:2018-11-11 21:13:49

标签: http arduino esp8266 nodemcu

以下代码获得的服务器响应为-1。

我在做什么错了?我做了很多研究,这是建议的代码。

我已经用Postman测试了服务器代码,并且工作正常,因此必须是其他代码。

使用的图书馆为ESP8266HTTPClient.h

ESP8266代码

void loop() { 
    HTTPClient http;

    http.begin("http://localhost:3003/record");
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");

    int httpCode = http.POST("Message");
    String payload = http.getString();

    Serial.println(httpCode);           // -1
    Serial.println(payload);            // nothing

    http.end();
}

Node Express服务器

var express = require("express");
var router = express.Router();

router.post("/record", function(req, res) {
    let message = req.body;
    console.log(message);

    res.status(200).send({
        message: message
    });
});

module.exports = router;

还尝试了带有GET请求的其他API。仍然不起作用。

void loop() { 
    HTTPClient http;

    http.begin("https://jsonplaceholder.typicode.com/posts/1");
    http.addHeader("Content-Type", "application/x-www-form-urlencoded");

    int httpCode = http.GET();
    String payload = http.getString();

    Serial.println(httpCode);           // -1
    Serial.println(payload);            // nothing

    http.end();
}

1 个答案:

答案 0 :(得分:0)

查看您的网址:

http://localhost:3003/record

那是什么意思?

localhost 是特殊IP地址的缩写-127.0.0.1-表示“此主机”

您没有在ESP8266上运行要连接的服务器,因此无法在其中使用localhost(ESP8266可能无法解析名称 localhost )。

您需要将 localhost 替换为运行Node Express代码的服务器的名称或IP地址。