2

我正在尝试使用带有 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");
    }
4

1 回答 1

4

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

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

你这样做的方式会导致数组溢出和可能的内存损坏。这可能是重置 ESP82660 的原因,如果使用wifi.send.

strcat此外,如果那里还没有,您可能需要在测试后换行。

于 2017-03-02T09:35:08.777 回答