使用 Arduino 和 ESP8266 的 HTTP GET 请求

HTTP GET request using Arduino and ESP8266

我正在尝试使用带 ESP82660 的 arduino Mega 2560 发出 HTTP GET 请求, 但它总是重启我的 esp8266。

这是我的方法:

    char *hello = "GET /api/bus/register?code=";
    strcat(hello,test);
    strcat(hello," HTTP/1.1\r\nHost: 192.168.88.233\r\nConnection:close\r\n\r\n");

    wifi.send((const uint8_t*)hello, strlen(hello));
    uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000);
    if (len > 0) {
    Serial.print("Received:[");
    for(uint32_t i = 0; i < len; i++) {
        Serial.print((char)buffer[i]);
    }
    Serial.print("]\r\n");
    }

您需要分配一个足够大的缓冲区来容纳整个连接字符串,例如:

char hello[256];
strcpy(hello, "GET /api/bus/register?code=");
strcat(hello, test);
strcat(hello," HTTP/1.1\r\nHost: 192.168.88.233\r\nConnection:close\r\n\r\n");

(以上代码仍然不安全,你还需要检查测试的大小或使用strncat)

您这样做的方式会导致数组溢出和可能的内存损坏。如果使用 wifi.send.

发送损坏的数据,这可能是重置 ESP82660 的原因

如果测试后还没有换行符,您可能还需要 strcat 换行符。