ESP8266之ESP8266WebServer库学习
ESP8266WebServer库
文章目录
- ESP8266WebServer库
- 1.webserver管理方法
- 1.1 ESP8266WebServer() —— 创建web server
- 1.2 begin() —— 启动web server
- 1.3 close() —— 关闭web server
- 1.4 stop() —— 关闭web server
- 2. 配置client请求处理方法
- 2.1 on() —— 请求响应回调
- 2.2 onNotFound() —— 配置无效url的handler
- 2.3 onFileUpload() —— 配置处理文件上传的hanlder
- 3. 获取请求方法
- 3.1 url() —— 获取请求的url
- 3.2 method() —— 获取请求方法
- 3.3 arg() —— 获取请求参数的值
- 3.4 argName() —— 获取请求参数的名称
- 3.5 args() —— 获取参数个数
- 3.6 hasArg() —— 是否存在某个参数
- 3.7 collectHeaders() —— 设置需要收集的请求头
- 3.8 header() —— 获取请求头参数
- 3.9 headerName() —— 获取请求头名字
- 3.10 headers() —— 获取请求头个数
- 3.11 hasHeader() —— 判断是否存在某个请求头
- 3.12 hostHeader() —— 获取请求头Host的值
- 3.13 authenticate() —— 认证校验
- 3.14 handleClient() —— 处理http请求
- 4. 响应client请求方法
- 4.1 upload() —— 处理文件上传
- 4.2 sendHeader() —— 设置响应头
- 4.3 setContentLength() —— 设置响应体长度
- 4.4 sendContent()/sendContent_P() —— 发送响应内容
- 4.5 streamFile() —— 发送响应文件流
- 4.6 send() —— 发送响应数据
1.webserver管理方法
1.1 ESP8266WebServer() —— 创建web server
ESP8266WebServer(IPAddress addr, int port = 80);
参数说明:
addr: ip地址
port: 端口号,默认为80
ESP8266WebServer(int port = 80);
参数说明:
port: 端口号
1.2 begin() —— 启动web server
void begin();
void begin(uint16_t port);
参数说明:
port: 端口号
begin函数要在配置好各个请求后在使用
1.3 close() —— 关闭web server
void close();
1.4 stop() —— 关闭web server
void stop();
2. 配置client请求处理方法
2.1 on() —— 请求响应回调
void on(const String &url, THandlerFunction handler);
参数介绍:
url: 路径
handler: 对应url的处理函数
注: 这里的handler函数是Http_ANY,不区分GET,POST等
void on(const String &url, HTTPMethod method, THandlerFunction fn);
参数介绍:
url: 路径
method: Http请求方法( HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, TTP_DELETE, HTTP_OPTIONS )
fn: 对应url的处理函数
void on(const String &url, HTTPMethod method, THandlerFunction fn, ThandlerFunction ufn);
参数介绍:
url: 路径
method: Http请求方法( HTTP_ANY, HTTP_GET ,HTTP_POST, HTTP_PUT, HTTP_PATCH, TTP_DELETE, HTTP_OPTIONS )
fn: 对应utl的处理函数
ufn: 文件上传处理函数
2.2 onNotFound() —— 配置无效url的handler
void onNotFound(THandlerFunction fn);
参数介绍:
fn: 对应的处理函数
注: 当找不到相对应的http请求处理函数时会调用该函数配置的fn方法
2.3 onFileUpload() —— 配置处理文件上传的hanlder
void onFileUpload(THandlerFunction fn);
参数介绍:
fn: 对应的处理函数
3. 获取请求方法
3.1 url() —— 获取请求的url
String url();
3.2 method() —— 获取请求方法
HTTPMethod method()
参数介绍:
返回值: HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS
3.3 arg() —— 获取请求参数的值
String arg(String name);
参数介绍:
name: 根据关键字name获取请求参数的值
String arg(int i);
参数介绍:
i: 获取第i个请求参数的值
3.4 argName() —— 获取请求参数的名称
String argName(int i);
参数介绍:
i: 获取第i个参数的名称
3.5 args() —— 获取参数个数
int args();
3.6 hasArg() —— 是否存在某个参数
bool hasArg(String name);
3.7 collectHeaders() —— 设置需要收集的请求头
void collectHeaders(const char* headerKeys[], const size_t headerKeysCount);
参数介绍:
headerkeys[]: 请求头的名字
headerkeysCount: 请求头的个数
3.8 header() —— 获取请求头参数
String header(String name);
参数设置:
name: 请求头名字
String header(int i);
参数介绍:
i: 获取第i个请求头参数
3.9 headerName() —— 获取请求头名字
String headerName(int i);
参数介绍:
i: 获取第i个请求头名
3.10 headers() —— 获取请求头个数
int headers();
3.11 hasHeader() —— 判断是否存在某个请求头
bool hasHeader(String name);
3.12 hostHeader() —— 获取请求头Host的值
String hostHeader();
3.13 authenticate() —— 认证校验
bool authenticate(const char * username, const char * password);
参数介绍:
username: 用户账号
password: 用户密码
3.14 handleClient() —— 处理http请求
void handleClient();
4. 响应client请求方法
4.1 upload() —— 处理文件上传
HTTPUpload& upload();
使用实例:
//实例说明 非完整代码,无法直接运行,理解即可
/*** 处理文件上传 HandlerFunction* 此方法会在文件上传过程中多次回调,我们可以判断上传状态*/
void handleFileUpload() {//判断http requestUriif (server.uri() != "/edit") {return;}//获得 Http上传文件处理对象HTTPUpload& upload = server.upload();//文件开始上传if (upload.status == UPLOAD_FILE_START) {String filename = upload.filename;if (!filename.startsWith("/")) {filename = "/" + filename;}DBG_OUTPUT_PORT.print("handleFileUpload Name: "); DBG_OUTPUT_PORT.println(filename);//本地文件系统创建一个文件用来保存内容fsUploadFile = SPIFFS.open(filename, "w");filename = String();} else if (upload.status == UPLOAD_FILE_WRITE) {//文件开始写入文件//DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize);if (fsUploadFile) {//写入文件fsUploadFile.write(upload.buf, upload.currentSize);}} else if (upload.status == UPLOAD_FILE_END) {//文件上传结束if (fsUploadFile) {fsUploadFile.close();}DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize);}
}//注册文件上传处理回调
server.on("/edit", HTTP_POST, []() {server.send(200, "text/plain", "");}, handleFileUpload);
4.2 sendHeader() —— 设置响应头
void sendHeader(const String& name, const String& value, bool first = false);
参数介绍:
name: 响应头名
value: 响应头值
first: 是否需要放在第一行
4.3 setContentLength() —— 设置响应体长度
void setContentLength(const size_t contentLength);
4.4 sendContent()/sendContent_P() —— 发送响应内容
void sendContent(const String& content);
void sendContent_P(PGM_P content);
void sendContent_P(PGM_P content, size_t size);
4.5 streamFile() —— 发送响应文件流
size_t streamFile(T &file, const String& contentType);
参数介绍:
file: 具体文件
contentType: 响应类型
4.6 send() —— 发送响应数据
void send(int code, const char* content_type = NULL, const String& content = String(""));
void send(int code, char* content_type, const String& content);
void send(int code, const String& content_type, const String& content);
void send_P(int code, PGM_P content_type, PGM_P content);
void send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength);
参数介绍:
code: 响应状态码
content_type: 响应内容类型
& content = String(""));
void send(int code, char* content_type, const String& content);
void send(int code, const String& content_type, const String& content);
void send_P(int code, PGM_P content_type, PGM_P content);
void send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength);
参数介绍:**code:** 响应状态码**content_type:** 响应内容类型**content:** 具体响应内容
ESP8266之ESP8266WebServer库学习相关推荐
- ESP8266开发之旅 网络篇⑪ WebServer——ESP8266WebServer库的使用
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... 共同学习成长QQ群 622368884,不喜勿 ...
- NodeMcu arduino ESP8266 使用Ticker库(多任务处理)
NodeMcu arduino ESP8266 本文章学习借鉴于太极创客团队,以表感谢.官网http://www.taichi-maker.com/ ESP8266 使用Ticker库(多任务处理) ...
- Arduino开发-TFT_eSPI库学习
TFT_eSPI库学习 文章目录 TFT_eSPI库学习 TFT_eSPI库安装以及配置 TFT_eSPI库文件目录 配置文件 1.User_Setup_.h 2. User_Setup_Select ...
- 04-ESP8226的WiFi通用库学习
文章目录 **04-ESP8226的WiFi通用库学习** WiFi事件类: WiFI睡眠模式: WiFi配置相关: 官方例程: 中断事件回调函数的使用: 04-ESP8226的WiFi通用库学习 E ...
- 【libevent】libevent库学习总结(一)——基础
libevent库学习总结(一)--基础 一.基础 1.1. 介绍 Libevent是一个用于开发可伸缩网络服务器的事件通知库.Libevent API提供了一种机制来执行回调函数,当某个特定事件发生 ...
- Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例
2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例 上一篇Guava库学习:学习 ...
- arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1
公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天在之前的文章基础上, ...
- 200528更新arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1...
公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天(200528)在之 ...
- POCO C++库学习和分析
POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...
- muduo网络库学习(八)事件驱动循环线程池EventLoopThreadPool
muduo是支持多线程的网络库,在muduo网络库学习(七)用于创建服务器的类TcpServer中也提及了TcpServer中有一个事件驱动循环线程池,线程池中存在大量线程,每个线程运行一个Event ...
最新文章
- VUE 框架添加全局公共方法 , 保留小数点后两位
- Dictionary (Of (TKey, TValue)) Class Example
- Swing组件集合的事件处理(四)
- SVT-AV1:开源编解码最新进展
- 第三次学JAVA再学不好就吃翔(part39)--package关键字
- 数据切分——Mysql分区表的建立及性能分析
- SWJTU 2208 最大覆盖
- Python3 文档批量助手
- 单位换算:秒(s)/毫秒(ms)/微秒(us)/纳秒(ns)/皮秒(ps)之间密尔(mil)/毫米(mil)/英尺(inch)之间
- 算法课讨论 深究哈密顿图
- 消除input标签的自动填充 白色背景,及更改字体颜色
- 在Windows x64中加载驱动
- C++的输入、输出与文件
- C1任务01 #记录与总结 #C无止境21040904在职C1组
- 爬虫练习网站 -http://quotes.toscrape.com的爬虫练习
- Maven介绍,IDEA安装和配置maven和maven指令
- 社区产品如何搭建内容体系?看看懂球帝与虎扑如何做
- python 如何爬取王者荣耀全英雄皮肤
- 【报告分享】吴晓波2022跨年演讲全文(附下载)
- 榆熙电商:带你了解一下拼多多先用后付的知识
热门文章
- 山东科技大学c语言答案,C语言练习题(山东科技大学吐血整理)
- 小甲鱼Python学习笔记之函数(二)
- visual studio写python_将 Visual Studio 变身为 Python IDE
- j2me模拟器自动退出的原因
- 百度人脸识别技术应用002---百度云上创建人脸库_分组_以及通过网页上传人脸照片到人脸分组
- Qt5开发从入门到精通——第一篇概述
- 记一篇JAR冲突的问题:Inceptor-Ddriver-4.7.1
- MySQL 5.7升级到8.0详细过程
- 云安全-Python实现凯撒密码和替换密码的加密解密与暴力破解
- vc如何画圆,并填充颜色