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

如何解决WiFiEsp.h库使用问题 基于Arduino Mega2560+ESP01获取JSON报错排查

问题解答

问题1:站点是否支持通过上述方式获取JSON数据

该站点支持获取对应JSON数据,但你当前使用的HTTP明文请求方式不符合站点要求,调整为HTTPS请求即可正常获取数据。

问题2:301跳转及超时错误原因与解决方法

错误原因

  • 301 Moved Permanently由站点强制HTTPS跳转规则触发:你当前使用80端口发起HTTP明文请求,站点所有HTTP请求都会被永久跳转到HTTPS 443端口的对应地址,因此返回301响应。
  • 超时错误是因为你的代码没有处理301跳转逻辑,收到301响应后仍持续等待服务器返回更多数据,而服务器返回跳转响应后就直接断开了连接,等待无响应后触发了WiFiEsp库的超时机制。

解决步骤

  1. 更换支持SSL的客户端类:将原WiFiEspClient替换为WiFiEspClientSecure(需确保你使用的WiFiEsp库版本支持SSL客户端,若不支持可更新官方最新版WiFiEsp库)
  2. 修改连接端口:将原client.connect(server, 80)修改为client.connect(server, 443),使用HTTPS的443端口建立连接
  3. 新增跳过证书校验配置:嵌入式设备通常无内置根证书,需跳过SSL证书校验避免握手失败
  4. (可选)若你的ESP01模块AT固件版本过低不支持SSL请求,需先将ESP01的AT固件升级至乐鑫官方1.7及以上版本,确保支持SSL握手能力

核心代码修改示例

#include "WiFiEsp.h"
// 新增SSL客户端头文件
#include "WiFiEspClientSecure.h"

char ssid[] = "***";            // your network SSID (name)
char pass[] = "#";        // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's statusb
char server[] = "apiv2.corona-live.com";

// 替换为SSL客户端
WiFiEspClientSecure client;

void setup()
{
  // 原有初始化、WiFi连接代码不变
  // ...

  Serial.println();
  Serial.println("Starting connection to server...");
  // 跳过SSL证书校验
  client.setInsecure();
  // 改为连接443端口
  if (client.connect(server, 443)) {
    Serial.println("Connected to server");
    // HTTP请求头内容不变
    client.println("GET /stats.json?timestamp=1634891368873 HTTP/1.1");
    client.println("Host: apiv2.corona-live.com");
    client.println("Connection: close");
    client.println();
  }
}

// loop、printWifiStatus函数代码无需修改
// ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:02