# 前言

在上一篇文章的基础上,搭建一个简单的 Http 服务器,即可以通过 IP 进行 Http 请求及响应.

说干就干.

# 引入 WebServer

p
#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 工具测试一下

# 测试

先访问已知路径 /
postman
成功返回了我们设定的内容

再访问一个未知路径
postman
这里也获取了 http 的 query 参数

小小芯片只有小拇指的指甲盖大小,也能作为一个 Http 服务器,以前从不玩硬件的我也是非常吃惊的.