STM32-ESP8266-获取请求

STM32-ESP8266-获取请求,stm32,esp8266,Stm32,Esp8266,我正在使用STM32和ESp8266,使用最新的AT命令固件V2 我还包括 这有助于分析at命令 我可以连接到我的路由器接入点和我的本地tcp服务器,但当发送GET请求时,我在本地服务器上什么也没有收到 const char* host = "192.168.1.9"; while(!Wifi_TcpIp_StartTcpConnection(0,host,3437,10)){ char buffer[] = "Unable to connect to

我正在使用STM32和ESp8266,使用最新的AT命令固件V2 我还包括 这有助于分析at命令

我可以连接到我的路由器接入点和我的本地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

假设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
变量。

非常感谢,这很有效,您知道如何在请求中添加头吗?例如,标头中的令牌参数?您可以在第一个CRLF(
\r\n
)之后和末尾的双CRLF之前添加HTTP标头,或者换句话说,在空标头之前添加HTTP标头。例如:
GET/opaaa HTTP/1.1\r\n肯:abc\r\n其他一些头:xyz\r\n\r\n