我正在研究与 M95 quectel 调制解调器接口(interface)的 PIC24F 微 Controller 中的 HTTP 协议(protocol)。
我正在尝试“POST”方法。我已经阅读了quectel的HTTP协议(protocol)的数据表。
下面是发送 HTTP post Request AT 命令:
AT+QIFGCNT
AT+QHTTPURL
AT+QHTTPPOST
AT+QHTTPREAD
AT+QIDEACT
我按照这个流程顺序写代码。我将这些命令放在无限循环中。 好的,我第一次成功从服务器读取响应,但后来我收到类似“http response failed”或 AT+QHTTPREAD 上的“http 没有请求”。
我必须重复整个 HTTP post AT 命令还是只重复 AT+QHTTPREAD?
代码:
bool SendAtCommand_Response(char *command, char *response,int Delay);
while(1)
{
SendAtCommand_Response("AT\r","OK",500);
uart1str("Modem is ready\r\n");
Delayms(2000);
uart1str("\r\n");
clear(); //clear response buffer
SendAtCommand_Response("AT+CPIN?\r","OK",2000);
Delayms(300);
uart1str("\r\n");
clear();
SendAtCommand_Response("AT+QIFGCNT=0\r","OK",500);
Delayms(300);
uart1str("\r\n");
clear();
SendAtCommand_Response("AT+QICSGP=1,\"airtelGPRS.com\"\r","OK",500);
Delayms(500);
uart1str("APN is set\r\n");
uart1str("\r\n");
clear();
SendAtCommand_Response("AT+QHTTPURL=37,30\r","CONNECT",500);
uart1str("URL is set\r\n");
clear();
SendAtCommand_Response(HTTP_POST_URL_HS ,"OK",500);
Delayms(500);
uart1str("URL Sent\r\n");
clear();
SendAtCommand_Response("AT+QHTTPPOST=22,25,10\r","CONNECT",1000);
Delayms(1000);
uart1str("\r\n");
clear();
SendAtCommand_Response("imeino=865733024598757","OK",100);
Delayms(1000);
uart1str("HTTP data sent\r\n");
uart1str("\r\n");
clear();
SendAtCommand_Response("AT+QHTTPREAD=30\r","CONNECT",3000);
Delayms(200);
clear();
SendAtCommand_Response("AT+QIDEACT\r","DEACT OK",500);
Delayms(200);
clear();
}
最佳答案
如果您使用相同的 URL 则不需要,只需从 AT+QHTTPPOST 开始。
如果另一个URL用于另一个内容,则从AT+GHTTPURL开始
关于http - 尝试读取 HTTP post 中的响应后出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092592/