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

ESP8266调用端口转发API返回404错误问题排查求助

ESP8266请求localtunnel转发API返回404的排查方案

以下是几种可能的原因及修复方法:

1. 缺失正确的Host请求头

localtunnel依赖请求中的Host头来路由到你的本地API。ESP8266的HTTPClient在使用完整URL初始化时,有时无法自动生成符合要求的Host头,导致服务器无法识别请求路径,返回404。

修复代码:

String serverPath = serverName + "?value1=" + String(a.acceleration.x);
Serial.println(serverPath);

WiFiClient client;
HTTPClient http;

http.begin(client, serverPath.c_str());
// 提取serverName中的域名作为Host值(假设serverName格式为https://xxx.loca.lt)
int hostStart = serverName.indexOf("//") + 2;
String host = serverName.substring(hostStart, serverName.indexOf("/", hostStart));
http.addHeader("Host", host);

int httpResponseCode = http.GET();
// 后续代码保持不变

2. 浮点数转字符串的格式问题

String(a.acceleration.x)可能将加速度值转换为科学计数法格式(比如1.23e-4),虽然串口输出看起来正常,但服务器的API可能无法识别这种格式的参数,导致路由匹配失败。

修复代码:

// 指定保留小数位数,避免科学计数法
String serverPath = serverName + "?value1=" + String(a.acceleration.x, 3);

3. DNS解析错误

ESP8266的DNS缓存或解析结果可能与本地设备(Thunder Client所在设备)不一致,导致请求发送到错误的IP地址。

修复方法:

  • 重启ESP8266并重新连接WiFi
  • 在WiFi连接代码中手动指定可靠的DNS服务器:
WiFi.begin(ssid, password);
WiFi.setDNS(IPAddress(8, 8, 8, 8)); // 使用谷歌公共DNS

4. 请求头不规范

部分服务器对HTTP请求的头信息有要求,ESP8266默认的请求头可能缺少User-Agent等字段,导致服务器拒绝处理请求。

修复代码:

http.begin(client, serverPath.c_str());
http.addHeader("User-Agent", "ESP8266");
http.addHeader("Connection", "close");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:33:15