# 前言
在上一篇文章的基础上,搭建一个简单的 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 服务器,以前从不玩硬件的我也是非常吃惊的.