ESP32-HTTP_webServer库(Arduino)

这篇具有很好参考价值的文章主要介绍了ESP32-HTTP_webServer库(Arduino)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ESP32-HTTP

介绍


ESP32是一款功能强大的微控制器,具有丰富的网络和通信功能。其中之一就是支持HTTP协议,这使得ESP32可以用于创建Web服务器。

HTTP是什么?
HTTP(Hyper Text Transfer Protocol),即超文本传输协议,是一种无状态的、建立在TCP之上的连接。其基本的工作流程是:客户端发送一个HTTP请求,说明自己想要访问的资源以及请求的动作;服务端在收到请求后,开始处理请求,并根据请求的内容做出响应。

ESP32上,我们可以使用其内置的HTTP Server组件来运行一个轻量级的Web服务器。这个服务器组件能够根据具体的配置分配内存和资源,并返回该服务器实例的句柄。通过这个句柄,我们可以控制服务器的各种行为,例如启动、停止等。

WebServer库用来做什么?
总而言之HTTP 服务器组件提供 websocket 支持,而WebServer库是一个专门用于HTTP协议通讯的库。它为开发者提供了一套简单易用的API,使得我们可以基于ESP32开发板快速地建立网络服务器。通过这个网络服务器,其他网络设备以及物联网设备都能通过HTTP协议来访问并实现物联网信息交流。

WebServer库的主要功能可以被分为两大部分:一部分是服务器运行管理,另一部分是处理客户端的HTTP请求。在服务器运行管理中,我们可以通过调用begin()函数来启动服务器,使用stop()函数来停止服务器,以及使用close()函数来关闭服务器。而在处理客户端的HTTP请求方面,库中包含了各种处理Get请求和Post请求的函数,这些函数可以帮助我们解析请求数据包,并回发响应数据包。

基本流程

以下使用WebServer库创建一个简单的Web服务器的基本步骤

  1. 引入相应库:

    #include <WebServer.h>
    

    通过引入WebServer库,你可以使用其中定义的类和函数来轻松创建Web服务器。

  2. 声明WebServer对象并设置端口号:

    WebServer server(80);
    

    在这里,你创建了一个名为serverWebServer对象,并设置端口号为80。Web服务器通常使用端口80来监听HTTP请求。

  3. 使用on()方法注册链接与回调函数:

    server.on("/", handleRoot);
    server.on("/haha", [](){
        server.send(200, "text/html", "Hello from /haha!");
    });
    

    使用on()方法注册了两个路径的处理函数。当访问根路径(“/”)时,会调用handleRoot函数。而当访问路径"/haha"时,使用Lambda函数直接发送一个包含"Hello from /haha!"的响应。

  4. 使用begin()方法启动服务器进行请求监听:

    server.begin();
    

    通过调用begin()方法,启动Web服务器开始监听请求。在这一步之前,你已经注册了路径和相应的处理函数。

  5. 使用handleClient()方法处理来自客户端的请求:

    void loop() {
        server.handleClient();
    }
    

    loop()函数中,使用server.handleClient()不断处理来自客户端的请求。这是一个循环,确保服务器一直处于监听状态。

这个流程能够创建一个简单的Web服务器,处理不同路径的请求并发送相应的响应。确保你的ESP32正确连接到WiFi网络,然后你可以在浏览器中访问相应的IP地址,查看服务器的响应。

示例:

#include <Arduino.h>
#include <WiFi.h>
#include <WebServer.h>
const char *ssid = "**********";
const char *password = "**********";

WebServer server(80);

void handelRoot()
{
  String HTML=R"(
      <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello World</h1>
    </body>
    </html>
  )";
  
  server.send(200,"text/html",HTML);
}
void setup()
{
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.print("\nIP地址:");
  //获取ip地址
  Serial.println(WiFi.localIP());

  //注册链接与回调函数
  server.on("/", handelRoot);

  //用lambda函数
  server.on("/haha",[](){
    server.send(200,"text/html",R"(
      <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Hello World</title>
    </head>
    <body>
        <h1>你好世界</h1>
    </body>
    </html>
    )");
  });

  //没有页面
  server.onNotFound([](){server.send(200,"text/html;charset=utf-8","没有找到");});
  
  server.begin(); 
}
void loop()
{
  server.handleClient();
}

在浏览器中访问IP地址得到的响应
ESP32-HTTP_webServer库(Arduino),esp32 Arduino,http,php,网络协议,服务器,网络,c++,esp32

常用API

WebServer 常用的 API

  1. on 方法:

    server.on(path, HTTP_METHOD, handlerFunction);
    

    用于注册路径(path)和相应的处理函数(handlerFunction)以及HTTP方法(HTTP_METHOD)。当有请求匹配到指定路径和方法时,将调用对应的处理函数。

  2. send 方法:

    server.send(statusCode, contentType, content);
    

    用于向客户端发送 HTTP 响应。你可以指定状态码 (statusCode)、内容类型 (contentType) 和实际内容 (content)。

  3. onNotFound 方法:

    server.onNotFound(handlerFunction);
    

    用于注册一个处理函数,当请求的路径未找到时将调用该函数。

  4. begin 方法:

    server.begin();
    

    用于启动服务器,开始监听请求。

  5. handleClient 方法:

    server.handleClient();
    

    用于处理客户端的请求。通常需要在 loop 函数中调用,以确保持续处理请求。

  6. arg方法:
    用于获取 HTTP 请求中的参数值的函数。查询参数是通过 URL 传递的键值对,出现在 URL 的问号 ? 后面。
    不了解URL请点击查看这篇文章:
    https://editor.csdn.net/md/?articleId=135704158

    String value = server.arg("parameterName");
    

    这个函数会返回指定参数名 (parameterName) 对应的值。例如,如果请求的 URL 是:

    http://example.com/path?name=John&age=25
    

    你可以使用 server.arg("name") 来获取 name 参数的值,这将返回一个 String 对象,其值为 “John”。

  7. pathArg方法:

    server.pathArg();
    

    用于从HTTP请求的路径中提取参数值

常见的HTTP状态码

以下是一些常见的HTTP状态码及其简要说明:

  • 200 OK: 服务器成功处理了请求。

  • 404 Not Found: 服务器无法找到请求的网页。这是最常见的客户端错误之一。

  • 301 Moved Permanently: 被请求的网页已经永久移动到新的位置。客户端应该使用新的 URI 重新发起请求。

  • 503 Service Unavailable: 服务器目前无法处理请求,通常是由于过载或维护。客户端可以稍后再次尝试。

  • 401 Unauthorized: 请求未经授权,需要提供有效的身份验证信息。通常,这要求用户进行登录。文章来源地址https://www.toymoban.com/news/detail-811093.html

到了这里,关于ESP32-HTTP_webServer库(Arduino)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ESP32构建简单WebServer服务器

    WebServer 服务器 此案例中,我们将创建一个最简单的 webserver 服务器 案例实现:ESP32 通过 SPIFFS 上传网页文件并保存,之后手机开启热点,ESP32 连接到该热点;与手机处于同一热点下的任何一个设备(下面用电脑演示)都可以通过 ESP32 反馈的内网地址访问其构建的网页! ESP

    2024年02月11日
    浏览(44)
  • ESP32cam系列教程003:ESP32cam实现远程 HTTP_OTA 自动升级

    本教程是 ESP32cam 的系列教程之三,使用 Arduino IDE 对 ESP32cam 开发板进行开发。 本教程代码同样使用与其他 ESP32 开发板。 OTA 即空中下载技术(Over-the-Air Technology),其可以安全方便地升级设备的固件或软件。远程升级还可以大大降低成本,节省资源,它已成为物联网设备和产

    2024年02月14日
    浏览(43)
  • ESP32通过HTTP及SNTP同步网络时间

    1、获取毫秒级时间 和普通系统函数相同 2、延时毫秒级时间 SNTP 指 简单网络时间协议(Simple Network Time Protocol),一个合格的物联网设备,少不了一个准确的钟。通过SNTP,可以使ESP32设备通过网络校准本地时间。使用起来也非常简单! 二、示例 1、场景一:最基础方式 最简单

    2024年02月09日
    浏览(34)
  • ESP32网络开发实例-HTTP-GET请求

    在本文中,我们将介绍如使用ESP32向 ThingSpeak 和 openweathermap.org 等常用 API 发出 HTTP GET 请求。 超文本传输协议 (HTTP) 用作服务器和客户端之间的请求-响应协议。 它使它们之间的通信顺畅。 两种最广泛使用的 HTTP 方法是 GET 和 POST。 通过 GET,从指定资源请求数据,而 POST 发送数

    2024年02月08日
    浏览(40)
  • ESP32网络开发实例-HTTP-POST请求

    在本文中,我们将介绍如何使用 ESP32向 ThingSpeak等常用 API 发出 HTTP POST 请求。 超文本传输协议 (HTTP) 用作服务器和客户端之间的请求-响应协议。 它使它们之间的通信顺畅。 两种最广泛使用的 HTTP 方法是 GET 和 POST。 通过 GET,从指定资源请求数据,而 POST 发送数据以创建资源

    2024年02月08日
    浏览(43)
  • ESP32+idf开发之WIFI通信入门(5)HTTP通信

    esp32作为HTTP客户端分别使用GET方法和POST方法向HTTP服务端发送请求得到响应,具体如下: 1、GET方法:向web服务器url发出get请求/add,发送参数x、y的值在服务端求和并响应,esp32得到返回数据; 2、POST方法:向web服务器url发出POST请求/add,发送参数x、y的值在服务端求和并响应,

    2024年02月12日
    浏览(38)
  • 2-STM32+ESP8266连接onenet并上传数据(HTTP)

    上一篇文章内容链接为下 1-ESP8266-AT指令初试化及部分基础知识 2-STM32+ESP8266连接onenet并上传数据(HTTP) ESP8266,onenet云平台,STM32三部分在结合使用前最好还是分别学习了解一下,效率更高,在开发过程中哪里有问题就有针对性了。 1、了解8266的基础知识(模式、初始化、操作

    2023年04月08日
    浏览(43)
  • STM32+ESP8266上传温湿度到onenet(HTTP)新手易懂指南

    哎,上云很简单的,但是我花了好几天因为各种莫名其妙的错误耽误了大量时间。所有很有必要总结一下 咳咳。但是我也比新手好不了多少, 以免误导新人,只教操作,理由核心不阐述,自己csdn找。 一、首先创建个HTTP协议onenet云平台(不会,就csdn里找,一堆堆) 对于初学

    2024年02月05日
    浏览(47)
  • stm32——esp8266物联网开发,连接onenet云平台(http)做智能家居(1)

    此处感谢b站up主——彼岸有光我们有船(我认为讲的和江科大老师一样好,如果习惯江科大老师的讲法的朋友们都可以看看捏) 提供的教程和最初的正点原子的源码,因为我学习的是江科大的stm32,所以进行了部分改编和部分注释,在此把视频内容简化,进行简单的复习。

    2023年04月08日
    浏览(50)
  • Arduino离线安装esp32/esp8266

    使用本教程所示的安装方法,双击安装包的傻瓜式操作,不用进入文件夹修改,不用添加网站地址,免去网络带来的烦恼。安装完成后直接使用。 官网地址:Software | Arduino 打开链接后如图  点击红色框内以后跳转到此界面 再次选择红框后下载 打开安装包一直下一步就好 打

    2023年04月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包