首页 > 解决方案 > 404 Bad request error by using AT Commands to Send Post and Get Request Using Arduino Serial Monitor

问题描述

我正在使用连接到我的 Arduino 的 RX 和 TX 引脚的 ESP8266 v1。我正在尝试发送 AT 命令来请求发布查询。但我唯一得到的是 400 错误请求错误。我在我的 PC 上部署了 web api。ESP8266 也连接到同一网络。我可以通过 AT+CIPSTART=1,"TCP","192.168.0.150",8011 连接。它显示连接正常,然后我设置要发送的字符的长度,我只写了 post 命令,但我得到 400 错误。

以下是我遵循的每个命令都成功的步骤,除了 > 符号之后的 post 命令。

AT
AT+RST
AT+CWMODE=3
AT+CIPSTART=1,"TCP","192.168.0.150"8011
AT+CIPSEND=1,211

然后它显示

>

POST /api/runtime HTTP/1.1\r\n
Host: 192.168.0.150:8011\r\n
Content-Type: application/json\r\n
Content-Length: 37\r\n
Accept: */*\r\n
Connection: Close\r\n
Cache-Control: no-cache\r\n\r\n
{"Value1":22,"Value2":45,"Value3":98}

我可以从邮递员应用程序发送命令,但不能使用 AT 命令。我的 API 地址是

http://192.168.0.150:8011/api/RunTime

我想补充的另一件事是直接在串行监视器上编写这些命令,回车和波特率为 115200 的新行。我一直在挠头一个星期,发现没有运气。请帮忙。谢谢

我的 ESP8266 版本是

AT+GMR

AT version:1.3.0.0(Jul 14 2016 18:54:01)
SDK version:2.0.0(5a875ba)
Farylink Technology Co., Ltd. v1.0.0.2
May 11 2017 22:23:58
OK

标签: arduinoesp8266at-commandbad-request

解决方案


请求格式没问题。我发现我使用 REALTERM 软件发送相同的请求,作为回应,我得到了我想要的。因此,如果有人遇到问题,我只是通过使用 REALTERM 来验证它。然而,仍然困扰我的一件事是我需要按两次发送按钮才能在 REALTERM 中发送请求。我相信这可能是由于定义的长度

AT+CIPSEND=1,{CONTENTLENGTHINNUMBER}

我希望这对某人有所帮助。


推荐阅读