如何将表单POST请求转换为ESP01 AT命令格式并解决报错?
解决ESP01通过AT命令发送POST表单数据的问题
前置要求
- 确保ESP01已成功连接到WiFi网络,可通过以下命令验证:
等待返回AT+CWJAP="你的WiFi SSID","WiFi密码"OK即表示连接成功。 - 确认ESP01能访问目标服务器:使用
AT+PING="服务器局域网IP",返回OK说明网络连通。 - 部分ESP模块需先开启HTTP客户端功能:
返回AT+HTTPCLIENT=1OK即可继续。
正确的AT+HTTPCPOST命令格式
你之前的错误在于将表单数据当作HTTP头部传递,且未设置正确的Content-Type头部。HTML表单的POST请求需要使用application/x-www-form-urlencoded格式,正确步骤如下:
发送HTTPCPOST命令,指定URL、请求体长度、头部数量及Content-Type头部:
AT+HTTPCPOST="http://服务器局域网IP:5000/add_data",30,1,"Content-Type: application/x-www-form-urlencoded"注意:
30是请求体Temperature=25.4&Humidity=52.2的字节长度,必须与实际长度完全匹配。当模块返回
>提示符后,输入请求体内容并发送:Temperature=25.4&Humidity=52.2等待模块返回HTTP响应,若成功会返回
OK及服务器的响应内容(如状态码200)。
备选方案:手动发送TCP格式的POST请求
如果AT+HTTPCPOST命令仍报错,可尝试直接建立TCP连接并发送完整HTTP请求:
建立TCP连接:
AT+CIPSTART="TCP","服务器局域网IP",5000返回
CONNECT表示连接成功。发送完整的HTTP POST请求(注意换行符
\r\n必须正确):POST /add_data HTTP/1.1\r\nHost: 服务器局域网IP:5000\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 30\r\n\r\nTemperature=25.4&Humidity=52.2发送完成后关闭连接:
AT+CIPCLOSE
关键注意事项
- 不能使用
127.0.0.1作为服务器地址,必须替换为服务器的局域网实际IP(如192.168.1.105)。 Content-Length的数值必须与请求体的字节数完全一致,否则服务器可能拒绝处理请求。- 不同版本的ESP AT命令可能存在细微差异,若命令不生效,可检查模块的AT固件版本是否最新。
内容的提问来源于stack exchange,提问作者Bosterrier
相关产品推荐
相关产品推荐

