You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决ESP32/Arduino向本地Node.js服务器发HTTP请求返回状态码-1问题

Arduino HTTP请求返回状态码-1的排查与修复

HTTPClient返回状态码-1,本质是客户端未能成功与服务器建立TCP连接,而非服务器返回的HTTP错误码。下面是针对性的排查步骤和修复建议:

1. 确认Arduino的WiFi连接状态

你的代码未包含WiFi连接逻辑,首先要确保Arduino已成功接入局域网:

// 在setup()或gotoServer()开头添加WiFi状态检查
if (WiFi.status() != WL_CONNECTED) {
  Serial.println("WiFi未连接,请检查网络配置");
  return;
}
Serial.print("Arduino局域网IP: ");
Serial.println(WiFi.localIP());

打印的IP需与服务器IP(192.168.1.83)处于同一网段(比如均为192.168.1.x)。

2. 验证服务器地址与端口的可达性

用电脑浏览器或终端工具直接访问http://192.168.1.83:3000/:

  • 如果无法访问,说明Node.js服务器未正常启动,或端口3000未对外开放,先修复服务器端问题。
  • 如果能正常访问,再继续排查Arduino端问题。

3. 关闭本地防火墙/安全软件拦截

电脑防火墙或杀毒软件可能阻止局域网设备访问3000端口,暂时关闭这类软件测试请求是否成功。若成功,记得在防火墙中添加Node.js程序的入站规则,允许3000端口的局域网访问。

4. 修复HTTPClient的资源泄漏问题

你的代码在请求结束后未调用http.end(),会导致TCP连接资源无法释放,可能引发请求失败。必须在函数末尾添加:

http.end(); // 释放HTTP连接资源

5. 补充必要的请求头(可选)

手动添加Content-Length可避免部分兼容性问题:

http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.addHeader("Content-Length", String(postData.length())); // 新增该行

6. 开启调试模式查看细节

开启HTTPClient调试模式,可打印连接过程的底层日志,帮助定位具体问题:

HTTPClient http;
http.setDebug(true); // 开启调试
http.begin("http://192.168.1.83:3000/");

修改后的完整示例代码

void gotoServer() {
  // 检查WiFi连接
  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("WiFi未连接");
    return;
  }

  String postData = "id=" + String(payload);
  Serial.println("************");
  Serial.println(postData);

  HTTPClient http;
  http.setDebug(true); // 可选,开启调试
  http.begin("http://192.168.1.83:3000/");
  http.addHeader("Content-Type", "application/x-www-form-urlencoded");
  http.addHeader("Content-Length", String(postData.length()));

  int httpCode = http.POST(postData);
  payload = http.getString();
  
  Serial.print("Data: ");
  Serial.println(postData);
  Serial.print("httpCode: ");
  Serial.println(httpCode);
  Serial.print("payload : ");
  Serial.println(payload);  

  http.end(); // 必须释放资源
}

内容的提问来源于stack exchange,提问作者Matin Rajabi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:07:16