使用 AT 命令向服务器发送 Json 数据

sending Json data to server using AT commands

我有一个网站接受 json 数据 post method.It 当我尝试从 POSTMAN rest 客户端发送请求时工作正常。 当我尝试使用 AT 命令进行相同操作时,它失败了。

这是我试过的 AT 序列

AT
AT+CREG? 
AT+CGATT?
AT+CIPSHUT
AT+CIPSTATUS
AT+CIPMUX=0 
AT+CGDCONT=1,"IP","airtelgprs.com"
AT+CSTT="airtelgprs.com"
AT+CIICR
AT+CIFSR
AT+CIPSTATUS
AT+CIPSTART= "TCP","obdsam.herokuapp.com","80"
AT+CIPSEND
>
POST /newtasks HTTP/1.1 (Ctrl+M + Ctrl+J)
HOST: obdsam.herokuapp.com" (Ctrl+M + Ctrl+J)
Accept: application/json (Ctrl+M + Ctrl+J)
Content-Type: application/json (Ctrl+M + Ctrl+J)
{"RPM":"41","ECT":"20"} (Ctrl+M + Ctrl+J)
(ctrl+j)(ctrl+z)

可能是什么问题?

这是串口终端的回复

问题已解决。 AT+CIPSEND 后的消息必须是这样的 >

POST /newtasks HTTP/1.1 (Ctrl+M + Ctrl+J)
HOST: obdsam.herokuapp.com (Ctrl+M + Ctrl+J)
Accept: application/json (Ctrl+M + Ctrl+J)
Content-Type: application/json(Ctrl+M + Ctrl+J)
Content-Length: 23 (Ctrl+M + Ctrl+J) (Ctrl+M + Ctrl+J)
{"RPM":"55","ECT":"55"} (Ctrl+M + Ctrl+J)(ctrl+j)(ctrl+z)

我个人观察到省略 (ctrl+m)(ctrl+j) 组合的常见错误。在上面的 post 中,前五行属于 HTTP header,第六行属于 HTTP body。注意第五行应该以两组carriage returnline feed结束,表示HTTP header结束。

另外,等到 CIPSTART returns CONNECT OK,等到 > appears afterCIPSEND`。

如果您正在 GET/POST-ing 具有动态 IP 的页面,您的代码应该足够快以 fetch/post IP 更改之前的页面。

祝你有愉快的一天....