0°

(十七)ESP32:HTTP GET请求

这篇文章的目的是解释如何使用ESP32和Arduino环境执行简单的HTTP GET请求。

 

介绍

这篇文章的目的是解释如何使用ESP32和Arduino环境执行简单的HTTP GET请求。为此,我们将使用HTTPClient.h库。

重要提示:请注意,在写这篇文章的时候,这个库刚刚被合并到Github的主页,可以这里看出。因此,您很可能需要更新您的ESP32 Arduino支持库版本。您可以在此处查看有关如何操作的说明。

请注意,您可能必须同时打开Git GUI并在Windows上以管理员身份运行get.exe文件,以使更改生效。如果一切正常,在Arduino IDE的示例菜单下,您应该有一个HTTPClient示例条目。您还可以在Github上查看示例

虽然在HTTPClient库可用之前我们可以执行HTTP请求,但这更复杂,因为我们必须处理套接字连接上的所有HTTP协议,如本例所示。幸运的是,这个库将隐藏大部分复杂函数,并且只暴露易于使用的函数。

因此,在我们的简单示例中,我们将连接到WiFi网络并对虚假的在线休息API网站执行一些HTTP GET请求。你可以在这里浏览这个网站 。

下面的代码基于HTTPClient库提供的一个基本示例,我建议您尝试。

代码

首先,我们需要包含用于连接到WiFi网络和执行HTTP请求的库。您可以更详细地检查如何连接到WiFi网络与ESP32在之前的帖子。

我们还需要存储WiFi网络的凭据,以便我们可以在设置功能上连接到它。为此,我们将声明两个全局变量,如下所示。请注意,您应该通过网络凭据更改值。

#include <WiFi.h>
#include <HTTPClient.h>
 
const char* ssid = "yourNetworkName";
const char* password = "yourNetworkPassword";

现在,在设置功能中,我们将打开一个串行连接,用于打印调试消息,并连接到WiFi网络。。请在WiFi.begin调用之前保持延迟,以保证库中后台完成的所有操作都能正常运行。在撰写本文时,如果我们没有包括延迟,则与WiFi网络的连接大多数时间都会失败。

void setup() {
 
  Serial.begin(115200);
  delay(4000);
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
 
  Serial.println("Connected to the WiFi network");
 
}

我们将在Arduino主循环上发送HTTP请求。首先,我们声明一个类HTTPClient的对象。该类将提供许多方法,这些方法将帮助我们使用HTTP功能,而无需担心低级实现细节。您可以检查头文件以获取这些方法的列表。

HTTPClient http;

之后,我们将在先前声明的对象上调用begin方法,将字符串参数作为我们要执行HTTP请求的URL传递。正如我们所说,我们将把请求发送到测试网站。您可以直接在Web浏览器中访问URL以检查要返回的预期内容。

http.begin("http://jsonplaceholder.typicode.com/comments?id=10");  //指定URL

现在,要发送请求,我们只需在http对象上调用GET方法。此方法不接收任何参数并返回请求的HTTP代码,我们将其存储在变量上以进行错误处理。请注意,小于0的代码是库中的错误代码(您可以在此处检查列表),大于零的值是标准HTTP返回代码。

因此,如果代码大于零,我们将打印返回的HTTP代码和对请求的响应。我们通过调用getString方法获得响应,该方法不接收任何参数并返回带响应的字符串。否则,我们将打印错误消息。

if (httpCode > 0) { //检查返回的代码
 
        String payload = http.getString();
        Serial.println(httpCode);
        Serial.println(payload);
 
}else {
 
      Serial.println("Error on HTTP request");
 
}

最后,我们需要调用end 方法,以确保释放资源。重要的是我们不要忘记这个电话。

http.end(); //释放资源

您可以查看完整的源代码,包括每个请求之间的小延迟。此外,在每个请求之前,我们正在检查我们是否仍然连接到WiFi网络:

当前内容已被隐藏,您需要登录才能查看

 测试代码

要测试代码,只需使用Arduino IDE上传它并打开串行监视器。你应该得到一个类似于图1的输出。注意我们得到一个HTTP 200代码,它对应一个OK代码。

ESP32:HTTP GET&nbsp;请求

图1 – ESP32的HTTP GET程序的输出。

只是为了确认结果,您可以在图2中查看直接在Web浏览器上访问URL时返回的输出。可以看出,答案是一样的。

ESP32:HTTP GET&nbsp;请求

图2 – 直接在Web浏览器上访问URL。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论