位置导航: ESP8266库 / ESP8266WebServer库 / 本页
说明
在ESP8266开发板所建立的物联网服务器在运行过程中,如果有客户端向ESP8266服务器发送HTTP请求,ESP8266服务器将会对客户端发送响应信息。本函数可用于向服务器响应体中添加自定义信息。
请留意:可以实现此功能的函数共有三个。一个是sendContent,一个是sendContent_P,还有一个是streamFile。这三个函数虽然功能相同,但是他们所发送的信息存储位置有很大区别。
sendContent: sendContent函数所发送的信息通常是程序中的一个字符串。该函数的优点是直接调用程序内字符串,这个操作比起两外两种方法来说更加简单直接。但是其缺点是,由于存储发送信息的字符串是在程序中的,这会占用开发板的动态内存空间。因此,使用sendContent函数时,发送信息的大小受到了限制。
sendContent_P:当我们使用sendContent_P时,发送的响应信息必须存储在程序存储空间。这一特点大大优化了程序内存占用。因此sendContent_P对于我们在发送较大的响应信息时非常有帮助。但是sendContent_P的信息仍是写在程序中,如果发送的信息需要分为多个文件存储,使用sendContent_P函数是无法胜任的。
streamFile:使用streamFile函数来发送响应信息是最推荐的操作方法。因为streamFile利用了ESP8266开发板的闪存文件系统来存储发送的信息内容。可以说streamFile函数既可以节省程序内存空间,又允许我们将需要发送的信息分为多个文件进行保存。但是使用streamFile时需要我们使用Arduino IDE的闪存文件上传工具预先将文件上传到闪存中。这一操作可能有些朋友不甚了解。不过您可以通过《零基础入门学用物联网》免费视频教程中的“闪存文件系统”部分,了解具体操作方法。
语法
sendContent_P(responseContent)
参数
responseContent: 响应体信息,该信息必须存储在程序存储空间的字符数组。
返回值
无
示例程序
当您将WiFi连接信息修改后并且将本示例程序上传ESP8266开发板后,开发板随即会自动连接WiFi。WiFi连接成功后,您将可以从串口监视器获取当前ESP8266开发板的IP。
假设您的开发板IP地址为192.168.0.106,那么接下来您可以通过浏览器输入以下地址信息。
http://192.168.0.106/
如下图示,接下来您将看到浏览器中显示出一行文字信息。这行信息正是通过以下示例程序中的server.sendContent_P(reponseContent)
实现的。其中reponseContent参数信息是通过以下语句建立的。我们可以看到,该语句中的数组是保存在ESP8266开发板的程序存储空间中的。
const char reponseContent[] PROGMEM = "HELLO FROM ESP8266";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : WebServer_demo_sendContent 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200406 程序目的/Purpose : 此程序用于演示如何使用ESP8266开发板所建立的物联网服务器向客户端响应 储存在程序存储空间中的字符数组信息。使用程序存储空间保存信息可大大节省 程序内存占用。 具体操作如下: 1. 储存在程序存储空间中的字符数组信息 2. 使用sendContent_P函数将数组信息作为响应返回给客户端。 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> //设置WiFi接入信息 const char* ssid = "TaichiMaker"; const char* password = "xxxxxxxx"; //创建 ESP8266WebServer 实例对象 ESP8266WebServer server(80); // 建立保存在程序存储空间中的字符串 const char reponseContent[] PROGMEM = "HELLO FROM ESP8266"; // 设置主页请求处理函数 void homepage() { Serial.println("用户访问了主页"); //设置响应体内容 server.sendContent_P(reponseContent); } // 设置处理404情况的函数'handleNotFound' void handleNotFound() { // 当浏览器请求的网络资源无法在服务器找到时, server.send(404, "text/plain", "404: Not found"); // NodeMCU将调用此函数。 } void setup(void) { //初始化串口 Serial.begin(115200); Serial.println(""); //初始化网络 WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); //初始化WebServer server.begin(); //设置主页处理函数 server.on("/", homepage); //设置404页面 server.onNotFound(handleNotFound); //串口输出服务器准备完成信息 Serial.println("HTTP server started"); } void loop(void) { //监听客户请求并处理 server.handleClient(); } |
相关内容
– send – 发送响应信息
– sendHeader – 发送响应头
– sendContent – 发送响应体
– setContentLength – 设置响应体长度
– streamFile – 发送响应体信息
位置导航: ESP8266库 / ESP8266WebServer库 / 本页