使用Arduino和ESP8266的HTTP GET请求

时间:2017-03-02 08:59:26

标签: arduino embedded esp8266 arduino-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");
    }

1 个答案:

答案 0 :(得分: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

您执行此操作的方式将导致阵列溢出和可能的内存损坏。如果使用wifi.send发送损坏的数据,这可能是重置ESP82660的原因。

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