http - 尝试读取 HTTP post 中的响应后出现错误

标签 http at-command modem

我正在研究与 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/

相关文章:

HTTP:哪个更好:长时间超时还是多次重试?

javascript - 如何在 Javascript 中通过 Firefox XPCOM 获取可靠的 HTTP 消息

putty - 通过 USSD 查询余额时出错

delphi - 如何取消最后一条AT命令(Delphi - TComport)?

c# - 如何使用 MciSendString 在 C# 中选择用于录制的音频设备

java - 为什么我的 HTTP GET 请求开始超时?

java - 使用 JAVA 作为消息的一部分发送 AT 命令

java - 通过 GSM 调制解调器播放 WAV 文件

java - 为什么 GSM 调制解调器不响应程序但响应 super 终端或扩展坞灯?

java - 使用 HTMLUnit 发送包含多个关键字作为参数的 POST 请求