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库学习相关推荐

  1. ESP8266开发之旅 网络篇⑪ WebServer——ESP8266WebServer库的使用

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... 共同学习成长QQ群 622368884,不喜勿 ...

  2. NodeMcu arduino ESP8266 使用Ticker库(多任务处理)

    NodeMcu arduino ESP8266 本文章学习借鉴于太极创客团队,以表感谢.官网http://www.taichi-maker.com/ ESP8266 使用Ticker库(多任务处理) ...

  3. Arduino开发-TFT_eSPI库学习

    TFT_eSPI库学习 文章目录 TFT_eSPI库学习 TFT_eSPI库安装以及配置 TFT_eSPI库文件目录 配置文件 1.User_Setup_.h 2. User_Setup_Select ...

  4. 04-ESP8226的WiFi通用库学习

    文章目录 **04-ESP8226的WiFi通用库学习** WiFi事件类: WiFI睡眠模式: WiFi配置相关: 官方例程: 中断事件回调函数的使用: 04-ESP8226的WiFi通用库学习 E ...

  5. 【libevent】libevent库学习总结(一)——基础

    libevent库学习总结(一)--基础 一.基础 1.1. 介绍 Libevent是一个用于开发可伸缩网络服务器的事件通知库.Libevent API提供了一种机制来执行回调函数,当某个特定事件发生 ...

  6. Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例 上一篇Guava库学习:学习 ...

  7. arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天在之前的文章基础上, ...

  8. 200528更新arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1...

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天(200528)在之 ...

  9. POCO C++库学习和分析

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  10. muduo网络库学习(八)事件驱动循环线程池EventLoopThreadPool

    muduo是支持多线程的网络库,在muduo网络库学习(七)用于创建服务器的类TcpServer中也提及了TcpServer中有一个事件驱动循环线程池,线程池中存在大量线程,每个线程运行一个Event ...

最新文章

  1. VUE 框架添加全局公共方法 , 保留小数点后两位
  2. Dictionary (Of (TKey, TValue)) Class Example
  3. Swing组件集合的事件处理(四)
  4. SVT-AV1:开源编解码最新进展
  5. 第三次学JAVA再学不好就吃翔(part39)--package关键字
  6. 数据切分——Mysql分区表的建立及性能分析
  7. SWJTU 2208 最大覆盖
  8. Python3 文档批量助手
  9. 单位换算:秒(s)/毫秒(ms)/微秒(us)/纳秒(ns)/皮秒(ps)之间密尔(mil)/毫米(mil)/英尺(inch)之间
  10. 算法课讨论 深究哈密顿图
  11. 消除input标签的自动填充 白色背景,及更改字体颜色
  12. 在Windows x64中加载驱动
  13. C++的输入、输出与文件
  14. C1任务01 #记录与总结 #C无止境21040904在职C1组
  15. 爬虫练习网站 -http://quotes.toscrape.com的爬虫练习
  16. Maven介绍,IDEA安装和配置maven和maven指令
  17. 社区产品如何搭建内容体系?看看懂球帝与虎扑如何做
  18. python 如何爬取王者荣耀全英雄皮肤
  19. 【报告分享】吴晓波2022跨年演讲全文(附下载)
  20. 榆熙电商:带你了解一下拼多多先用后付的知识

热门文章

  1. 山东科技大学c语言答案,C语言练习题(山东科技大学吐血整理)
  2. 小甲鱼Python学习笔记之函数(二)
  3. visual studio写python_将 Visual Studio 变身为 Python IDE
  4. j2me模拟器自动退出的原因
  5. 百度人脸识别技术应用002---百度云上创建人脸库_分组_以及通过网页上传人脸照片到人脸分组
  6. Qt5开发从入门到精通——第一篇概述
  7. 记一篇JAR冲突的问题:Inceptor-Ddriver-4.7.1
  8. MySQL 5.7升级到8.0详细过程
  9. 云安全-Python实现凯撒密码和替换密码的加密解密与暴力破解
  10. vc如何画圆,并填充颜色