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

Arduino ESP8266执行http.POST()返回错误码-11问题求助

ESP8266 HTTPClient返回错误码-11排查方案

ESP8266HTTPClient库官方定义错误码-11为连接失败,常见触发原因和对应解决方法如下:

  • 必现问题修复:你的代码缺少HTTP资源释放逻辑,每次请求完成后必须调用http.end()释放底层连接资源,否则多次请求后会出现连接占满、内存泄漏,直接触发-11错误,修改authenticate函数如下:
int authenticate()
{
  http.begin(client, authentication);
  http.addHeader("Content-Type", "application/json");

  String data = "{\"username\":\"" + String(username) + "\"," +
                "\"password\":\"" + String(password) + "\"}";

  int httpResponseCode = http.POST(data);
  // 错误时打印可读错误信息,方便快速定位
  if (httpResponseCode < 0) {
    Serial.printf("请求错误:%s\n", http.errorToString(httpResponseCode).c_str());
  } else {
    token = http.getString();
  }
  // 新增:释放HTTP连接资源
  http.end();

  Serial.println(httpResponseCode);
  return httpResponseCode;
}
  • 协议匹配检查:确认authentication变量存储的接口地址协议头是否正确:
    • 如果是HTTPS接口,你当前使用的WiFiClient不支持SSL连接,需要替换为WiFiClientSecure,测试阶段可以加client.setInsecure()关闭证书校验快速验证,生产环境建议写入服务端证书做校验
    • 确认接口端口是否显式标注,非80(HTTP)、443(HTTPS)的非标端口必须在地址中写明
  • 网络一致性检查:Postman测试正常仅代表你所用电脑的网络可访问接口,需确认ESP8266连接的WiFi没有做端口封禁、域名拦截,接口没有配置仅允许特定IP段访问
  • 域名解析排查:在authenticate函数开头加入调试代码,确认ESP8266可以正常解析接口域名:
IPAddress serverIp;
if (WiFi.hostByName("你的接口域名", serverIp)) {
  Serial.print("域名解析结果:");
  Serial.println(serverIp);
} else {
  Serial.println("域名解析失败");
}
  • 版本兼容性验证:如果近期升级过ESP8266 Arduino核心版本,新版核心对HTTP/HTTPS连接逻辑有修改,可回退到一个月前使用的核心版本验证是否恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:18:04