怎么查找网站是谁做的,梅州哪里做网站,企业网站宽度,用dw做网站的视频文章目录 前言HTTP协议是什么#xff1f;HTTP协议的特点HTTP协议的常见应用 esp32 使用http通信通信流程基础使用HTTPClient 常用的函数函数介绍#xff1a;void end(void);bool connected(void);void setReuse(bool reuse);void setUserAgent(const String userAgent);… 文章目录 前言HTTP协议是什么HTTP协议的特点HTTP协议的常见应用 esp32 使用http通信通信流程基础使用HTTPClient 常用的函数函数介绍void end(void);bool connected(void);void setReuse(bool reuse);void setUserAgent(const String userAgent);void setAuthorization(const char * user, const char * password);int GET();String getString(void);int PATCH(uint8_t * payload, size_t size);int PATCH(String payload);int POST(uint8_t * payload, size_t size);int POST(String payload);int PUT(uint8_t * payload, size_t size);int PUT(String payload);int sendRequest(const char * type, String payload);void addHeader(const String name, const String value, bool first false, bool replace true);void collectHeaders(const char* headerKeys[], const size_t headerKeysCount);String header(const char* name);String header(size_t i);String headerName(size_t i);int headers();bool hasHeader(const char* name);int getSize(void);const String getLocation(void);WiFiClient getStream(void);WiFiClient* getStreamPtr(void);int writeToStream(Stream* stream);String getString(void);static String errorToString(int error);void setCookieJar(CookieJar* cookieJar);void resetCookieJar();void clearAllCookies(); 总结 前言
随着物联网IoT的快速发展ESP32作为一款高性能、低功耗的Wi-Fi和蓝牙双模芯片受到了广泛的关注和应用。在物联网设备中HTTP协议是实现设备与服务器之间通信的常用协议。本文将介绍HTTP协议的基本概念及其常见应用场景。 HTTP协议是什么
HTTPHyperText Transfer Protocol超文本传输协议是一种用于传输超文本的应用层协议。它是万维网WWW的基础定义了客户端如浏览器与服务器之间的通信规则。HTTP协议采用请求-响应模式客户端发送请求服务器返回响应。
HTTP协议的特点
无状态每次请求都是独立的服务器不会保留之前请求的状态。灵活性支持多种数据格式如HTML、JSON、XML等。简单性易于实现和使用广泛应用于Web开发。
HTTP协议的常见应用
Web浏览浏览器通过HTTP协议请求网页内容服务器返回HTML页面。API通信物联网设备通过HTTP协议与服务器进行数据交互如上传传感器数据或获取控制指令。文件传输通过HTTP协议下载或上传文件如软件更新或日志文件。
esp32 使用http通信
通信流程
连接网络开始http通信发送请求并获取响应关闭连接
基础使用
我们需要使用HTTPClient类来进行通信 如果我们要开启一个http通信使用下面这个函数参数为你要http通信的url
bool begin(String url);如果我们要GET一个内容我们可以使用下面这个函数
int GET();他的返回值为状态码。 状态码有下面这些取值
200 OK请求成功。具体的含义取决于HTTP方法。例如GET方法表示资源已被获取并在消息体中传输。201 Created请求成功并且新的资源已经作为结果创建。这通常是在POST请求或某些PUT请求后发送的响应。204 No Content没有要发送的内容但头部可能有用。用户代理可能会使用新的头部更新此资源的缓存头部。301 Moved Permanently请求的URL已永久移动到新位置并且将来的引用应使用新的URL。400 Bad Request服务器无法理解请求的语法。401 Unauthorized请求需要用户验证。403 Forbidden服务器理解请求但拒绝执行它。404 Not Found服务器找不到请求的资源。500 Internal Server Error服务器遇到错误无法完成请求
我们可以通过下面这个函数来获取GET的返回值
String getString(void);我们可以使用下面这个函数来关闭http连接
void end(void);#include WiFi.h
#include HTTPClient.hconst char* ssid .......; // WiFi网络名称
const char* password .......; // WiFi网络密码void setup() {Serial.begin(115200); // 初始化串口通信// 连接到WiFi网络WiFi.begin(ssid, password);while (WiFi.status() ! WL_CONNECTED) {delay(1000);Serial.println(Connecting to WiFi...);}Serial.println(Connected to WiFi);// 设置HTTPClient对象HTTPClient http;// 为GET请求设置目标URLString url http://example.com/api/data; // 替换为你的目标URL// 发送GET请求http.begin(url);// 发送请求并获取响应int httpResponseCode http.GET();if (httpResponseCode 0) { // 如果收到响应Serial.print(HTTP Response code: );Serial.println(httpResponseCode); // 打印响应代码String payload http.getString(); // 获取响应内容Serial.println(payload); // 打印响应内容} else {Serial.print(Error code: );Serial.println(httpResponseCode); // 打印错误代码}http.end(); // 关闭连接
}void loop() {// 程序主循环此处不需要添加其他代码
}
HTTPClient 常用的函数
函数介绍
void end(void);
函数原型 void end(void);函数作用 关闭HTTPClient对象释放资源。函数参数 无。返回值的作用 无返回值。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
// 处理响应
http.end(); // 关闭HTTP连接bool connected(void);
函数原型 bool connected(void);函数作用 检查HTTPClient对象是否已连接到服务器。函数参数 无。返回值的作用 返回true表示连接成功返回false表示未连接或连接已断开。示例代码HTTPClient http;
if (http.connected()) {// 执行请求操作
} else {// 重新连接或处理断开连接情况
}void setReuse(bool reuse);
函数原型 void setReuse(bool reuse);函数作用 设置是否启用HTTP keep-alive功能允许多次复用同一TCP连接。函数参数 reuse布尔值true表示启用keep-alivefalse表示禁用。 返回值的作用 无返回值。示例代码HTTPClient http;
http.setReuse(true); // 启用keep-alivevoid setUserAgent(const String userAgent);
函数原型 void setUserAgent(const String userAgent);函数作用 设置HTTP请求的用户代理User-Agent标头。函数参数 userAgentString类型要设置的用户代理字符串。 返回值的作用 无返回值。示例代码HTTPClient http;
http.setUserAgent(ESP32 Client);void setAuthorization(const char * user, const char * password);
函数原型 void setAuthorization(const char * user, const char * password);函数作用 设置基本身份验证的用户名和密码。函数参数 user用户名字符串。password密码字符串。 返回值的作用 无返回值。示例代码HTTPClient http;
http.setAuthorization(username, password);int GET();
函数原型 int GET();函数作用 发送HTTP GET请求并接收响应。函数参数 无。返回值的作用 返回HTTP响应状态代码例如200表示成功。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
// 处理响应String getString(void);
函数原型 String getString(void);函数作用 获取HTTP响应的正文内容。函数参数 无。返回值的作用 返回包含HTTP响应正文内容的String对象。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
if (httpResponseCode 0) {String response http.getString();Serial.println(response);
}int PATCH(uint8_t * payload, size_t size);
函数原型 int PATCH(uint8_t * payload, size_t size);函数作用 发送HTTP PATCH请求并附带数据。函数参数 payload指向要发送数据的字节数组的指针。size要发送数据的大小字节数。 返回值的作用 返回HTTP响应状态代码。示例代码HTTPClient http;
uint8_t data[] { 0x01, 0x02, 0x03 };
int httpResponseCode http.PATCH(data, sizeof(data));int PATCH(String payload);
函数原型 int PATCH(String payload);函数作用 发送HTTP PATCH请求并附带数据字符串形式。函数参数 payload要发送的数据字符串。 返回值的作用 返回HTTP响应状态代码。示例代码HTTPClient http;
String data keyvalue;
int httpResponseCode http.PATCH(data);int POST(uint8_t * payload, size_t size);
函数原型 int POST(uint8_t * payload, size_t size);函数作用 发送HTTP POST请求并附带数据。函数参数 payload指向要发送数据的字节数组的指针。size要发送数据的大小字节数。 返回值的作用 返回HTTP响应状态代码。示例代码HTTPClient http;
uint8_t data[] { 0x01, 0x02, 0x03 };
int httpResponseCode http.POST(data, sizeof(data));int POST(String payload);
函数原型 int POST(String payload);函数作用 发送HTTP POST请求并附带数据字符串形式。函数参数 payload要发送的数据字符串。 返回值的作用 返回HTTP响应状态代码。示例代码HTTPClient http;
String data keyvalue;
int httpResponseCode http.POST(data);int PUT(uint8_t * payload, size_t size);
函数原型 int PUT(uint8_t * payload, size_t size);函数作用 发送HTTP PUT请求并附带数据。函数参数 payload指向要发送数据的字节数组的指针。size要发送数据的大小字节数。 返回值的作用 返回HTTP响应状态代码。示例代码HTTPClient http;
uint8_t data[] { 0x01, 0x02, 0x03 };
int httpResponseCode http.PUT(data, sizeof(data));int PUT(String payload);
函数原型 int PUT(String payload);函数作用 发送HTTP PUT请求并附带数据字符串形式。函数参数 payload要发送的数据字符串。 返回值的作用 返回HTTP响应状态代码。示例代码HTTPClient http;
String data keyvalue;
int httpResponseCode http.PUT(data);int sendRequest(const char * type, String payload);
函数原型 int sendRequest(const char * type, String payload);函数作用 发送自定义类型的HTTP请求并附带数据字符串形式。函数参数 typeHTTP请求类型例如 “GET”, “POST”, “PUT” 等。payload要发送的数据字符串。 返回值的作用 返回HTTP响应状态代码。示例代码HTTPClient http;
int httpResponseCode http.sendRequest(POST, keyvalue);void addHeader(const String name, const String value, bool first false, bool replace true);
函数原型 void addHeader(const String name, const String value, bool first false, bool replace true);函数作用 添加HTTP请求头。函数参数 name头部字段的名称。value头部字段的值。first可选参数默认为false。如果为true则将新头部添加到头部列表的开头。replace可选参数默认为true。如果为true则替换现有的同名头部如果为false则添加到现有同名头部后面。 返回值的作用 无返回值。示例代码HTTPClient http;
http.addHeader(Content-Type, application/json);void collectHeaders(const char* headerKeys[], const size_t headerKeysCount);
函数原型 void collectHeaders(const char* headerKeys[], const size_t headerKeysCount);函数作用 指定要收集的HTTP响应头。函数参数 headerKeys指向包含要收集的头部字段名称的数组。headerKeysCount数组中头部字段名称的数量。 返回值的作用 无返回值。示例代码const char* headersToCollect[] { Content-Length, Content-Type };
HTTPClient http;
http.collectHeaders(headersToCollect, sizeof(headersToCollect) / sizeof(headersToCollect[0]));String header(const char* name);
函数原型 String header(const char* name);函数作用 获取指定名称的HTTP响应头值。函数参数 name要获取的头部字段名称。 返回值的作用 返回包含头部字段值的String对象。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
String contentType http.header(Content-Type);String header(size_t i);
函数原型 String header(size_t i);函数作用 获取指定索引位置的HTTP响应头值。函数参数 i要获取的头部字段的索引从0开始。 返回值的作用 返回包含头部字段值的String对象。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
String firstHeader http.header(0);String headerName(size_t i);
函数原型 String headerName(size_t i);函数作用 获取指定索引位置的HTTP响应头名称。函数参数 i要获取的头部字段的索引从0开始。 返回值的作用 返回包含头部字段名称的String对象。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
String firstName http.headerName(0);int headers();
函数原型 int headers();函数作用 获取HTTP响应中头部字段的数量。函数参数 无。返回值的作用 返回头部字段的数量。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
int numHeaders http.headers();bool hasHeader(const char* name);
函数原型 bool hasHeader(const char* name);函数作用 检查HTTP响应中是否存在指定名称的头部字段。函数参数 name要检查
的头部字段名称。
返回值的作用 如果存在指定名称的头部字段则返回true否则返回false。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
if (http.hasHeader(Content-Type)) {// 处理存在Content-Type头部的情况
}int getSize(void);
函数原型 int getSize(void);函数作用 获取HTTP响应正文的大小字节数。函数参数 无。返回值的作用 返回HTTP响应正文的大小。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
int contentSize http.getSize();const String getLocation(void);
函数原型 const String getLocation(void);函数作用 获取HTTP响应中的 Location 头部字段的值用于处理重定向。函数参数 无。返回值的作用 返回包含 Location 头部字段值的String对象的引用。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
String redirectLocation http.getLocation();WiFiClient getStream(void);
函数原型 WiFiClient getStream(void);函数作用 获取底层的WiFiClient对象用于直接访问底层网络连接。函数参数 无。返回值的作用 返回一个WiFiClient对象的引用。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
WiFiClient stream http.getStream();WiFiClient* getStreamPtr(void);
函数原型 WiFiClient* getStreamPtr(void);函数作用 获取底层的WiFiClient对象指针用于直接访问底层网络连接。函数参数 无。返回值的作用 返回一个指向WiFiClient对象的指针。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
WiFiClient* streamPtr http.getStreamPtr();int writeToStream(Stream* stream);
函数原型 int writeToStream(Stream* stream);函数作用 将HTTP响应内容写入给定的流Stream对象。函数参数 stream指向目标流对象的指针。 返回值的作用 返回写入流的字节数。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
WiFiClient client;
int bytesWritten http.writeToStream(client);String getString(void);
函数原型 String getString(void);函数作用 获取HTTP响应的正文内容。函数参数 无。返回值的作用 返回包含HTTP响应正文内容的String对象。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
String response http.getString();static String errorToString(int error);
函数原型 static String errorToString(int error);函数作用 将HTTPClient库中的错误代码转换为对应的错误消息字符串。函数参数 errorHTTPClient库中定义的错误代码。 返回值的作用 返回表示错误消息的String对象。示例代码HTTPClient http;
http.begin(http://example.com/api/data);
int httpResponseCode http.GET();
if (httpResponseCode 0) {String errorMessage HTTPClient::errorToString(httpResponseCode);Serial.println(errorMessage);
}void setCookieJar(CookieJar* cookieJar);
函数原型 void setCookieJar(CookieJar* cookieJar);函数作用 设置用于管理HTTP请求和响应中Cookie的CookieJar对象。函数参数 cookieJar指向CookieJar对象的指针。 返回值的作用 无返回值。示例代码CookieJar cookieJar;
HTTPClient http;
http.setCookieJar(cookieJar);void resetCookieJar();
函数原型 void resetCookieJar();函数作用 重置CookieJar清除所有保存的Cookie。函数参数 无。返回值的作用 无返回值。示例代码HTTPClient http;
http.resetCookieJar();void clearAllCookies();
函数原型 void clearAllCookies();函数作用 清除所有保存的Cookie无论它们是否过期。函数参数 无。返回值的作用 无返回值。示例代码HTTPClient http;
http.clearAllCookies();总结
本文简要介绍了HTTP协议的基本概念及其在物联网设备中的常见应用。HTTP协议作为一种简单、灵活的通信协议广泛应用于Web开发和物联网设备中。希望本文能帮助读者更好地理解HTTP协议及其在ESP32中的应用。