ESP8266 HTTPClient报API过时错误,如何使用::begin(WiFiClient, url)?
问题根因
新版ESP8266 Arduino核心自带的HTTPClient库已经废弃了直接传入URL字符串的begin()旧API,强制要求调用时必须传入一个WiFiClient实例作为第一个参数,你当前代码用的是已淘汰的旧写法,所以触发编译报错。
具体修改方法
- 补全缺失的头文件引用,在代码开头的库引入区域添加两行:
#include <ESP8266WiFi.h> #include <WiFiClient.h>
- 在全局变量定义区域(和
MFRC522 mfrc522(SS_PIN, RST_PIN);这类全局定义放一起)声明WiFiClient实例:
WiFiClient wifiClient;
- 替换loop()函数里原来的
http.begin()调用行,改成传入WiFiClient实例的新写法:
// 原错误写法:http.begin("http://192.168.0.0/Folder_Name/file.php"); http.begin(wifiClient, "http://192.168.0.0/Folder_Name/file.php");
额外注意事项
- 你代码里填写的目标地址
192.168.0.0是网段保留地址,无法作为实际服务器IP通信,必须替换成你部署php接收文件的设备在局域网内的真实IP,否则编译通过后也无法正常提交数据 - 之前注释里提到的
ESP8266HTTPClient库检测不到的问题,不需要单独安装第三方同名库,只要你在开发板管理器里安装了完整的ESP8266核心,该库会自动随核心安装,单独装第三方来源的同名库反而会因为版本不匹配出现其他编译问题 - 确保运行NodeMCU和部署php服务的设备连接同一个局域网,否则请求会超时返回负的错误码
内容的提问来源于stack exchange,提问作者YT MAURITIUS
相关产品推荐
相关产品推荐

