我正在将STM32与ESp8266配合使用,并使用最新的AT命令固件V2 我也包括https://github.com/nimaltd/ESP8266 这有助于解析命令
我可以连接到路由器访问点和本地tcp服务器,但是在发送GET请求时,我的本地设备什么都没收到
const char* host = "192.168.1.9";
while(!Wifi_TcpIp_StartTcpConnection(0,host,3437,10)){
char buffer[] = "Unable to connect to TCP Backend\r\n";
HAL_UART_Transmit(&huart1,buffer,sizeof(buffer),HAL_MAX_DELAY);
};
uint8_t req ="GET /opaaa HTTP/1.1\r\n"; Wifi_TcpIp_SendDataTcp(0,sizeof(req),&req); //success but i receive nothing
答案 0 :(得分:1)
假设TCP通信正常(您可以连接到服务器,发送和接收数据),并且连接的主机在该端口上提供HTTP服务,那么我在请求中看到的问题是您缺少最后添加其他CRLF,如下所示:
char *req = "GET /opaaa HTTP/1.1\r\n\r\n";
Wifi_TcpIp_SendDataTcp(0, strlen(req), (uint8_t*)req);
这表示您要发送的HTTP标头的结尾。在您的原始情况下,服务器可能仍在等待更多标头,因此将响应发送回给您。
我还建议清理发送代码,这是我上面粘贴的一种方法-您正在将字符串分配给单个字节uint8_t
变量。