STM32用ESP8266WiFi模块实现Http协议交互云服务器关键代码
首先,要知道http是基于tcp的。所以要想实现http协议交互云服务器,例如,模拟浏览器向网站发送请求并接收返回数据。
我们要先连接一个可以连上互联网的路由器。这里我们设置ESP8266为 AP+STA模式并连接目标路由器
atk_8266_send_cmd("AT+CWMODE=3","OK",50); //设置WIFI AP+STA模式
sprintf((char*)p,"AT+CWJAP=\"%s\",\"%s\"",wifista_ssid,wifista_password);//设置无线参数:ssid,密码
atk_8266_send_cmd(p,"WIFI GOT IP",300); //连接目标路由器,并且获得IP
下一步连接目标TCP服务器
sprintf((char*)p,"AT+CIPSTART=\"TCP\",\"%s\",%s",(u8*)ipbuf,(u8*)ipport); //配置目标TCP服务器
while(atk_8266_send_cmd(p,"OK",200));
成功连接目标TCP服务器后开启与TCP服务器的透传模式
atk_8266_send_cmd("AT+CIPMODE=1","OK",200); //传输模式为:透传
atk_8266_send_cmd("AT+CIPSEND","OK",20);
接下来只需要按照如下正确的请求头格式发送数据就能实现http协议与云服务器交互了
atk_8266_send_data(“POST /网址名 HTTP/1.1\r\nHost: 服务器IP:服务器端口号\r\nContent-Type: application/json(数据格式)\r\nContent-Length: 数据长度\r\nConnection: Keep Alive\r\n\r\n传输的数据内容\r\n”,“OK”,100);
例:
atk_8266_send_data("POST /admin.html HTTP/1.1\r\nHost:168.42.135.47:8080\r\nContent-Type: application/json\r\nContent-Length: 17\r\nConnection: Keep Alive\r\n\r\n{\"name\":\"dianzu\"}\r\n","OK",100);