ESP32通过HTTP请求获取API或者网页源码
目录
在本教程中,我们将学习如何使用ESP32开发板连接WiFi网络并向指定的URL发送HTTP GET请求。
类似实现读取到请求的html源码或者内容,这样的作用是我们使用ESP32开发一些API项目的时候,会使用到。
我们将逐步讲解代码中的每个部分,以帮助您理解其工作原理。
1. 引入必要的库
首先,我们需要引入两个库:WiFi.h
和HTTPClient.h
。WiFi.h
库用于连接WiFi网络,而HTTPClient.h
库用于发送HTTP请求。
#include <WiFi.h> // 引入WiFi库,用于连接WiFi网络
#include <HTTPClient.h> // 引入HTTPClient库,用于HTTP请求
2. 设置WiFi网络信息
接下来,我们定义WiFi网络的名称(SSID)和密码。这些信息将用于连接到您的WiFi网络。
const char* ssid = "your_ssid"; // WiFi网络名称
const char* password = "your_password"; // WiFi网络密码
3. 初始化串口通信
在setup()
函数中,我们首先初始化串口通信,以便在串口监视器中查看调试信息。
void setup() {
Serial.begin(115200); // 初始化串口通信,波特率为115200
4. 连接WiFi
使用WiFi.begin()
函数开始连接WiFi网络,并使用while
循环等待连接成功。在连接过程中,我们每秒打印一次连接状态。
WiFi.begin(ssid, password); // 开始连接WiFi
// 等待WiFi连接成功
while (WiFi.status() != WL_CONNECTED) {
delay(1000); // 每隔1秒检查一次连接状态
Serial.println("Connecting to WiFi..."); // 打印连接状态
}
Serial.println("Connected to WiFi"); // 打印连接成功信息
5. 发送HTTP请求
一旦WiFi连接成功,我们使用HTTPClient
对象发送HTTP GET请求。首先,使用http.begin()
函数初始化请求,并指定目标URL。然后,使用http.GET()
函数发送请求并获取HTTP状态码。
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http; // 创建HTTPClient对象
http.begin("http://example.com/"); // 初始化HTTP请求,指定目标网址
int httpCode = http.GET(); // 发起GET请求,并获取返回的HTTP状态码
6. 处理HTTP响应
检查HTTP请求是否成功。如果成功,我们打印HTTP状态码和响应内容;如果失败,打印错误信息。最后,使用http.end()
函数结束请求并释放资源。
// 检查HTTP请求是否成功
if (httpCode > 0) {
Serial.println("Success"); // 打印成功信息
Serial.println(httpCode); // 打印HTTP状态码
Serial.println("--------------------------------");
String payload = http.getString(); // 获取返回的响应内容
Serial.println(payload.length()); // 打印响应内容的长度
Serial.println("--------------------------------");
Serial.println(payload); // 打印响应内容
} else {
Serial.println("Error on HTTP request"); // 打印请求失败信息
}
http.end(); // 结束HTTP请求,释放资源
}
}
7. 循环函数
在loop()
函数中,我们不需要执行任何操作,因为所有的工作都在setup()
函数中完成。
void loop() {
// loop函数中不需要执行任何操作
}
心得
- 调试信息:使用串口监视器查看调试信息是非常有用的,特别是在连接WiFi和发送HTTP请求时。
- 错误处理:在处理HTTP请求时,检查返回的状态码可以帮助我们了解请求是否成功。
- 资源管理:在结束HTTP请求时,记得释放资源以避免内存泄漏。
完整代码
#include <WiFi.h> // 引入WiFi库,用于连接WiFi网络
#include <HTTPClient.h> // 引入HTTPClient库,用于HTTP请求
const char* ssid = "your_ssid"; // WiFi网络名称
const char* password = "your_password"; // WiFi网络密码
void setup() {
Serial.begin(115200); // 初始化串口通信,波特率为115200
WiFi.begin(ssid, password); // 开始连接WiFi
// 等待WiFi连接成功
while (WiFi.status() != WL_CONNECTED) {
delay(1000); // 每隔1秒检查一次连接状态
Serial.println("Connecting to WiFi..."); // 打印连接状态
}
Serial.println("Connected to WiFi"); // 打印连接成功信息
// 检查WiFi是否已连接
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http; // 创建HTTPClient对象
http.begin("http://example.com/"); // 初始化HTTP请求,指定目标网址
int httpCode = http.GET(); // 发起GET请求,并获取返回的HTTP状态码
// 检查HTTP请求是否成功
if (httpCode > 0) {
Serial.println("Success"); // 打印成功信息
Serial.println(httpCode); // 打印HTTP状态码
Serial.println("--------------------------------");
String payload = http.getString(); // 获取返回的响应内容
Serial.println(payload.length()); // 打印响应内容的长度
Serial.println("--------------------------------");
Serial.println(payload); // 打印响应内容
} else {
Serial.println("Error on HTTP request"); // 打印请求失败信息
}
http.end(); // 结束HTTP请求,释放资源
}
}
void loop() {
// loop函数中不需要执行任何操作
}
通过本教程,您应该能够理解如何使用ESP32连接WiFi并进行HTTP请求。希望这能为您的物联网项目提供一个良好的起点!