# 前言
在上一篇文章的基础上,搭建一个简单的 Http 服务器,即可以通过 IP 进行 Http 请求及响应.
说干就干.
# 引入 WebServer
| #include <ESP8266WiFi.h> | |
| #include <ESP8266WebServer.h> | |
| // 定义 wifi 名称和密码 | |
| const char* ssid = "HUAWEI-KTT6S5_HiLink"; | |
| const char* password = "15008683399lwp"; | |
| // 设置 led 灯的 gpio | |
| const int led = 2; | |
| // 创建一个 WebServer 监听 80 端口 | |
| ESP8266WebServer server(80); | |
| void handleRoot(){ | |
| const String Html = "<!DOCTYPE html>\ | |
| <html>\ | |
| <head>\ | |
| <meta charset=\"utf-8\">\ | |
| <title>Hello ESP8266!</title>\ | |
| </head>\ | |
| <body>\ | |
| <h1>看到的这个网页为ESP8266提供<h1>\ | |
| </body>\ | |
|     </html>"; | |
| digitalWrite(led,1); | |
| server.send(200,"text/html",Html); | |
| digitalWrite(led,0); | |
| } | |
| void handleNotFound(){ | |
| digitalWrite(led, 1); | |
| String message = "File Not Found\n\n"; | |
| message += "URI: "; | |
| message += server.uri(); | |
| message += "\nMethod: "; | |
| message += (server.method() == HTTP_GET) ? "GET" : "POST"; | |
| message += "\nArguments: "; | |
| message += server.args(); | |
| message += "\n"; | |
| for (uint8_t i = 0; i < server.args(); i++) { | |
| message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; | |
|   } | |
| server.send(404, "text/plain", message); | |
| digitalWrite(led, 0); | |
| } | |
| void setup() { | |
| Serial.begin(115200); | |
|   // 设置 led 为输出模式 | |
| pinMode(led,OUTPUT); | |
| digitalWrite(led,1); | |
|   // 设置 Wifi 连接模式为 STA | |
| WiFi.mode(WIFI_STA); | |
| WiFi.begin(ssid,password); | |
| while(WiFi.status() != WL_CONNECTED){ | |
| Serial.print("."); | |
| delay(2000); | |
|   } | |
| server.on("/",handleRoot); | |
| server.onNotFound(handleNotFound); | |
| server.begin(); | |
| Serial.println("connect success!"); | |
| Serial.println(WiFi.localIP()); | |
| digitalWrite(led,0); | |
| } | |
| void loop() { | |
| server.handleClient(); | |
| } | 
写好之后验证没有问题进行上传烧写到板子里,使用 postman 工具测试一下
# 测试
先访问已知路径 /
成功返回了我们设定的内容
再访问一个未知路径
这里也获取了 http 的 query 参数
小小芯片只有小拇指的指甲盖大小,也能作为一个 Http 服务器,以前从不玩硬件的我也是非常吃惊的.
