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

ESP8266发送HTTPS请求失败问题咨询及解决方法求助

ESP8266 HTTPS请求失败解决方案

针对你遇到的"向HTTPS端口发送纯HTTP请求"400错误,以及改用WiFiClientSecure仍失败的问题,可按以下步骤排查解决:

1. 明确错误根源

400错误是因为API服务器监听HTTPS端口(默认443),但你使用WiFiClient发送的是HTTP协议请求,服务器拒绝处理。改用WiFiClientSecure是正确方向,但失败通常是证书配置、核心版本或代码初始化问题导致。

2. 正确配置WiFiClientSecure

确保ESP8266核心版本达标

旧版本ESP8266核心对TLS 1.2/1.3支持不完善,建议升级到2.7.4及以上版本(在Arduino IDE的开发板管理器中更新)。

证书处理二选一

方式一:导入服务器根证书(推荐,安全)

  • 从API服务器获取根证书:用浏览器访问API地址,查看证书详情,导出PEM格式的根证书。
  • 在代码中嵌入证书并加载:
    // 替换为你的API服务器根证书内容
    const char* rootCACert = R"EOF(
    -----BEGIN CERTIFICATE-----
    MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
    d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
    QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
    MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
    b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
    9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
    CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
    nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
    43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
    T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
    gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
    BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
    TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
    DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
    hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
    06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
    PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
    YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
    CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
    -----END CERTIFICATE-----
    )EOF";
    
    WiFiClientSecure client;
    void setup() {
      // ... WiFi连接代码 ...
      client.setCACert(rootCACert); // 加载根证书
    }
    

方式二:跳过证书验证(仅测试用,不安全)

如果只是临时测试,可关闭证书验证(生产环境禁止使用):

WiFiClientSecure client;
client.setInsecure(); // 跳过证书验证

3. 修正HTTPClient初始化代码

确保API URL为HTTPS开头,正确传入WiFiClientSecure实例:

#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecure.h>

ESP8266WiFiMulti wifiMulti;
WiFiClientSecure client;
const char* rootCACert = "你的根证书内容";

void setup() {
  Serial.begin(115200);
  // 添加WiFi网络
  wifiMulti.addAP("WiFi名称", "WiFi密码");
  
  // 等待WiFi连接
  while (wifiMulti.run() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi连接成功");

  // 加载证书(如果用方式一)
  client.setCACert(rootCACert);
  // 如果用方式二,替换为client.setInsecure();
}

void loop() {
  // 采集MAX6675温度数据
  float temperature = readMAX6675(); // 替换为你的温度采集函数

  HTTPClient http;
  // 初始化HTTP连接,传入WiFiClientSecure和完整HTTPS URL
  if (http.begin(client, "https://你的API地址/上传接口")) {
    // 设置请求头,与ESP32版本一致
    http.addHeader("Content-Type", "application/json");
    // 构造请求数据,和之前ESP32的格式保持一致
    String payload = "{\"temp\":" + String(temperature) + "}";
    
    // 发送POST请求
    int httpCode = http.POST(payload);
    
    // 处理响应
    if (httpCode > 0) {
      Serial.printf("响应码: %d\n", httpCode);
      String response = http.getString();
      Serial.println("响应内容: " + response);
    } else {
      Serial.printf("请求失败,错误码: %d\n", httpCode);
      Serial.printf("错误描述: %s\n", http.errorToString(httpCode).c_str());
    }
    http.end(); // 关闭连接
  } else {
    Serial.println("初始化HTTP连接失败");
  }

  delay(5000); // 定时上传间隔
}

// 示例MAX6675读取函数
float readMAX6675() {
  // 替换为你的MAX6675采集逻辑
  return 25.5;
}

4. 排查其他可能问题

  • 确认WiFi连接正常:wifiMulti.run()返回WL_CONNECTED,且能获取到IP地址。
  • 检查API URL正确性:必须以https://开头,若服务器使用非默认443端口,需在URL中指定(如https://api.example.com:8443/upload)。
  • 匹配请求格式:确保请求头、payload结构和之前ESP32的代码完全一致,服务器可能因格式不匹配拒绝请求。
  • 内存排查:ESP8266内存有限,避免同时运行过多任务,必要时用free()函数释放内存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:54:25