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

ESP32请求HTTPS服务器返回错误码-5的排查求助

ESP32 HTTPS请求错误码-5排查方案

错误码-5的核心含义

ESP32 HTTP客户端返回错误码-5,通常对应TLS握手失败或连接超时——因为你访问的是HTTPS链接,问题大概率出在证书验证、TLS版本适配,或是服务器侧的访问限制。

分步排查流程

1. 先验证证书验证是否是问题根源

ESP32默认开启HTTPS证书严格验证,但内置根证书库可能不包含目标网站的CA证书,导致握手失败。可以临时关闭验证做测试(仅用于排查,生产环境不建议):

WiFiClientSecure client;
client.setInsecure(); // 关闭证书验证

如果关闭后能正常获取数据,说明是证书问题,后续需要添加目标网站的根证书到代码中。

2. 适配服务器TLS版本

部分服务器仅支持TLS 1.2及以上版本,ESP32默认TLS版本可能不匹配,强制指定版本试试:

client.setTLSVersion(TLS_v1_2); // 强制使用TLS 1.2

3. 检查网络基础连通性

  • 确认ESP32连接的WiFi能正常访问公网:先尝试ping公共IP(如8.8.8.8)测试网络。
  • 测试DNS解析:用ping kapsejlads.nu获取目标网站IP,直接用IP发起HTTPS请求,排除DNS解析失败的可能。

4. 规避服务器User-Agent拦截

很多服务器会拦截非浏览器的User-Agent,手动设置浏览器标识:

http.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");

5. 用极简代码排除干扰

写一个无冗余的测试代码,排除其他逻辑影响:

#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>

const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
const char* url = "https://kapsejlads.nu/hide-horn-esp.php?klubid=13";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi connected");

  WiFiClientSecure client;
  client.setInsecure();
  client.setTLSVersion(TLS_v1_2);

  HTTPClient http;
  if (http.begin(client, url)) {
    http.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
    int httpCode = http.GET();
    Serial.printf("HTTP状态码: %d\n", httpCode);
    if (httpCode > 0) {
      String payload = http.getString();
      Serial.println("返回内容: " + payload);
    }
    http.end();
  } else {
    Serial.println("HTTP初始化失败,错误码: " + String(http.errorCode()));
  }
}

void loop() {
  delay(10000);
}

6. 服务器侧排查(若有权限)

查看目标网站的访问日志,确认ESP32的请求是否被记录,是否有4xx/5xx状态码返回但客户端未捕获到;同时检查服务器是否有IP黑白名单、请求频率限制等规则。

结论方向

  • 关闭证书验证后成功:需添加目标网站的根证书到ESP32代码中。
  • 设置User-Agent后成功:服务器拦截了ESP32默认的标识。
  • 以上都无效:用Wireshark抓包分析ESP32的请求过程,确认是TLS握手阶段失败还是请求被直接拒绝。

内容的提问来源于stack exchange,提问作者Frank Rosendahl Larsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:55:15