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

ESP32 HTTP Client无法连接OpenAI API URL问题排查求助

ESP32连接OpenAI API失败的故障原因与解决方案

核心原因1:错误使用不支持HTTPS的WiFiClient

ESP32的WiFiClient仅支持普通HTTP连接,无法处理HTTPS的SSL/TLS加密通信,而OpenAI API仅提供HTTPS服务,这是连接失败的最常见原因。

解决办法:改用WiFiClientSecure替代WiFiClient,并配置必要的SSL参数。修改后的代码示例:

#include <WiFiClientSecure.h>

WiFiClientSecure client; // 替换为支持HTTPS的客户端

String lineEnd = "\n";
String twoHyphens = "--";
String boundary = String("*****") + String("AaB03x") + String("*****");
String charset="UTF-8";

const char *HOST = "api.openai.com"; // 仅保留主机名,去掉https://和路径部分
const int PORT = 443;

void setup() {
  Serial.begin(115200);
  // 此处省略WiFi连接初始化代码...

  Serial.println("Preparing to POST");

  // 调试阶段可临时关闭证书验证(生产环境不建议使用)
  client.setInsecure();

  if (client.connect(HOST, PORT)) {
    Serial.println("Connected to server");
  } else {
    Serial.println("Failed to connect");
    // 打印错误码辅助排查问题
    Serial.print("Connection error code: ");
    Serial.println(client.connectError());
  }
}

核心原因2:connect参数格式错误

原代码直接将完整URL(https://api.openai.com/v1/audio/transcriptions)传入connect方法,但该方法要求的是纯主机名(如api.openai.com),而非包含协议、路径的完整URL,这会导致DNS解析失败。

解决办法:拆分URL,仅将主机名传入connect,后续发起请求时再在HTTP头中指定完整路径。

其他可能的故障原因

  • 网络环境限制:ESP32连接的WiFi无外网访问权限,或所在网络(如公司内网、校园网)通过防火墙屏蔽了OpenAI域名。可尝试切换到手机热点测试,或在同一网络下用电脑访问API URL验证连通性。
  • DNS解析失败:ESP32无法解析api.openai.com的IP地址。可手动查询OpenAI API的最新IP,替换主机名进行测试,或检查WiFi的DNS服务器配置。
  • SSL证书验证失败:若不使用setInsecure(),ESP32需要导入OpenAI API对应的根证书才能通过验证。可从浏览器导出api.openai.com的根证书,转换为PEM格式后用client.setCACert()方法设置。
  • 端口错误:OpenAI API仅使用443端口,8080是HTTP代理端口,未配置代理时使用8080必然连接失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:40:09