乐鑫技术交流
直播中

王军

7年用户 1747经验值
私信 关注
[问答]

将ESP8266配置为带有AT命令的Web服务器,AT命令回复HTTP GET出现错误怎么解决?

我已将ESP8266配置为带有 AT 命令的 Web 服务器。当浏览器连接时,它会向我发送一个请求[i]GET /favicon.ico我想用一个[i]错误 404 未找到.

如何在响应 IPD 时发送的数据包中执行此操作?



回帖(1)

万物死

2024-7-16 16:57:56
要解决这个问题,您需要在ESP8266上实现一个简单的Web服务器,以便在收到HTTP GET请求时返回一个404错误。以下是实现此功能的步骤:

1. 首先,确保您的ESP8266已经连接到WiFi网络。您可以使用以下AT命令来连接到WiFi:

```
AT+RST
AT+CWMODE=1
AT+CWJAP="your_SSID","your_PASSWORD"
```

2. 接下来,我们需要设置ESP8266作为Web服务器。为此,我们将使用以下AT命令:

```
AT+CIPMUX=1
AT+CIPSERVER=1,80
```

这些命令将启用多连接模式并启动一个监听端口80的Web服务器。

3. 现在,我们需要处理HTTP请求。当ESP8266收到HTTP GET请求时,我们需要检查请求的URL。如果URL是"/favicon.ico",我们将返回一个404错误。以下是处理HTTP请求的示例代码:

```c
#include

SoftwareSerial esp8266(2, 3); // RX, TX

void setup() {
  Serial.begin(115200);
  esp8266.begin(115200); // 设置ESP8266的波特率

  // 连接到WiFi
  sendCommand("AT+RST");
  sendCommand("AT+CWMODE=1");
  sendCommand("AT+CWJAP="your_SSID","your_PASSWORD"");

  // 设置Web服务器
  sendCommand("AT+CIPMUX=1");
  sendCommand("AT+CIPSERVER=1,80");
}

void loop() {
  if (esp8266.available()) {
    String response = esp8266.readStringUntil('n');

    if (response.startsWith("+IPD,")) {
      handleHTTPRequest();
    }
  }
}

void sendCommand(String command) {
  Serial.print("Request: ");
  Serial.println(command);
  esp8266.println(command);
  while (esp8266.available()) {
    String line = esp8266.readStringUntil('n');
    Serial.print("Response: ");
    Serial.println(line);
  }
}

void handleHTTPRequest() {
  String request = esp8266.readStringUntil('n');
  if (request.indexOf("GET /favicon.ico") > -1) {
    send404Error();
  } else {
    send200OK();
  }
}

void send200OK() {
  sendCommand("AT+CIPSEND=0,75"); // 发送HTTP 200 OK响应
  esp8266.print(
    "HTTP/1.1 200 OKrn"
    "Content-Type: text/htmlrn"
    "Connection: closernrn"
    "

Hello, World!

"
  );
}

void send404Error() {
  sendCommand("AT+CIPSEND=0,83"); // 发送HTTP 404 Not Found响应
  esp8266.print(
    "HTTP/1.1 404 Not Foundrn"
    "Content-Type: text/htmlrn"
    "Connection: closernrn"
    "

404 Not Found

"
  );
}
```

这段代码将创建一个简单的Web服务器,当收到"/favicon.ico"请求时,返回一个404错误。其他请求将返回一个200 OK响应和一些HTML内容。

请注意,这段代码使用了Arduino的SoftwareSerial库,因此您需要在Arduino IDE中安装该库。此外,您需要将"your_SSID"和"your_PASSWORD"替换为您的WiFi网络名称和密码。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分