我正在尝试使用带有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");
}
答案 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
换行。