ESP8266之ESP8266WebServer库学习

ESP8266WebServer库

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 requestUri
  if (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:** 具体响应内容
### 回答1: 实现STM32F103与ESP8266的配合,可以实现一个简单的Web服务器。具体步骤如下: 首先,需要将ESP8266模块连接到STM32F103开发板上。可以使用串口或者SPI总线进行连接。连接后,需要配置ESP8266模块的工作模式,使其能够作为一个服务器。 其次,需要在STM32F103开发板上编写相应的程序。可以使用STM32CubeMX进行代码生成,选择相应的GPIO口和外设,进行配置。 然后,需要在STM32F103的代码中,进行串口通信或者SPI通信,与ESP8266模块进行数据传输。通过AT指令和ESP8266模块进行通信,可以实现WiFi的连接与配置。 接下来,需要在STM32F103的代码中,实现Web服务器的功能。可以使用STM32的内部FLASH或者SD卡等存储器,存储网页文件。通过在程序中配置相应的路由和处理函数,可以实现网页的访问与处理。 最后,需要在ESP8266模块的配置中,设置对应的IP地址和端口号,并将请求转发到STM32F103开发板上。通过解析HTTP请求,可以实现对不同网页请求的响应。 总之,通过将STM32F103与ESP8266进行配合,可以实现一个简单的Web服务器。这样,就可以通过网络访问STM32F103上的资源,并实现相应的控制与交互功能。 ### 回答2: 要实现STM32F103和ESP8266一起工作,搭建一个Web服务器可以按照以下步骤进行。 首先,连接STM32F103和ESP8266的串口,并使用AT指令将ESP8266设置为AP模式,以便创建一个WiFi网络。 通过STM32F103的USART控制器,将AT指令发送到ESP8266。使用串口通信协议进行数据传输。同时,使用GPIO控制ESP8266的复位引脚以便在需要时进行复位。 一旦ESP8266被设置为AP模式,STM32F103可以使用ESP8266创建一个TCP/IP连接。使用AT指令,可以通过发送HTTP GET请求从Web服务器上获取数据。 STM32F103还可以通过AT指令将数据发送到Web服务器。通过将数据封装在HTTP POST请求中,并将其发送到Web服务器,可以将数据发送到远程服务器。 在STM32F103上,可以使用HTTP来解析接收到的HTTP响应。这样,可以轻松地获取响应中的数据。 最后,使用STM32F103的USART控制器,将响应数据发送到串口,并通过STM32F103上的LCD显示出来。 总结起来,要实现STM32F103和ESP8266一起工作,创建一个Web服务器,你需要连接STM32F103和ESP8266并设置ESP8266为AP模式。使用STM32F103控制ESP8266,发送AT指令来实现HTTP GET和POST请求。以及使用HTTP来解析响应数据,并将数据发送到STM32F103上的LCD进行显示。 ### 回答3: STM32F103和ESP8266都是常见的嵌入式芯片,可以用于实现Web服务器功能。 首先,STM32F103作为主控芯片,负责控制整个系统的运行。它可以搭载一个TCP/IP协议栈,用于与ESP8266通信,并接收和处理来自ESP8266的数据。 ESP8266作为WiFi模块,可以连接到网络并通过TCP/IP协议与其他设备通信。它支持AT指令集,可以通过向其发送AT指令来控制其工作模式和网络连接。在本例中,ESP8266被配置为与STM32F103通过串口通信。 实现Web服务器功能的步骤如下: 1. 配置ESP8266的工作模式和连接网络。通过向ESP8266发送AT指令,将其设置为AP或STA模式,并将其连接到指定的WiFi网络。 2. 在STM32F103中,初始化串口和与ESP8266通信的GPIO引脚。使用串口和ESP8266进行通信,发送和接收数据。 3. STM32F103发送HTTP请求到ESP8266,使用ESP8266模块作为服务器,接收STM32F103的请求并返回相应的数据。可以使用GET或POST请求来获取或发送数据。 4. ESP8266接收到来自STM32F103的HTTP请求后,解析请求的内容,并执行相应的处理操作。可以使用ESP8266文件来简化HTTP请求的处理。 5. ESP8266将处理结果返回给STM32F103。根据请求的内容,可以是HTML页面、JSON数据或其他格式的响应。 6. STM32F103接收到来自ESP8266的响应后,进行相应的处理,如显示HTML页面或解析JSON数据。 通过上述步骤,可以实现STM32F103控制ESP8266并利用其作为Web服务器的功能。整个过程可以灵活调整和扩展,以满足具体需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值