Skip to content

HTTP应用

HTTP(S)使用流程

通过模块的 AT+SAPBR 命令,可配置 PDP 上下文,激活/去激活上下文以及查询PDP 上下文状态。再发送HTTP(S) AT 命令,可以发送 HTTP(S) GET/POST 请求到 HTTP(S)服务器,并读取来自 HTTP(S)服务器的响应结果。大致流程如下:

  • AT+SAPBR配置APN,USERNAME等PDP通路的上下文信息
  • AT+SAPBR激活PDP通路
  • AT+HTTPPARA="CID",x配置PDP通路ID
  • AT+HTTPPARA="URL",xxx配置URL地址
  • AT+HTTPACTION=x进行GET/POST等操作请求
  • \+HTTPACTION: x,xx 主动上报HTTP请求结果
  • AT+HTTPREAD读取HTTP服务器返回内容

小量数据GET请求

AT+SAPBR=3,1,"CONTYPE","GPRS"   设置HTTP功能的承载类型

OK  
AT+SAPBR=3,1,"APN",""   设置pdp承载参数之APN

OK  
AT+SAPBR=1,1    激活该承载的GPRS PDP上下文

OK  

AT+HTTPINIT HTTP协议栈初始化

OK  
AT+HTTPPARA="CID",1 设置HTTP会话参数:CID

OK  
AT+HTTPPARA="URL","http://httpbin.org/bytes/1000" 设置URL

OK
AT+HTTPACTION=0 GET请求

OK

+HTTPACTION: 0,200,1000 GET结果
AT+HTTPREAD

+HTTPREAD: 1000
xxxx......                  服务器返回的数据内容
OK
AT+HTTPTERM                 结束当前HTTP会话

OK

大量数据GET请求

大量数据是指服务器需要返回的数据超过28KB,模组RAM空间限制,无法全部缓存所有服务器返回数据。需要边接收服务器数据,边通过AT指令输出数据。如果服务器输出数据不及时读取,服务器端会利用TCP窗口缓存技术,暂停当前的发送,直到通过AT指令读取数据后,再启动发送。

AT+SAPBR=3,1,"CONTYPE","GPRS"   设置HTTP功能的承载类型

OK  
AT+SAPBR=3,1,"APN",""           设置pdp承载参数之APN

OK  
AT+SAPBR=1,1                    激活该承载的GPRS PDP上下文

OK  

AT+HTTPINIT                     HTTP协议栈初始化

OK  
AT+HTTPPARA="CID",1             设置HTTP会话参数:CID

OK  
AT+HTTPPARA="URL","http://httpbin.org/bytes/10000"

OK
AT+HTTPEXACTION=0

OK

+HTTPEXACTION: 0,200,10000

+HTTPEXGET                      服务器返回数据主动上报

AT+HTTPEXGET                    获取服务器返回数据内容

+HTTPEXGET: 9992                服务器返回的数据长度
XXXXX................           服务器返回的数据内容
OK

+HTTPEXGET                      服务器返回数据主动上报
AT+HTTPEXGET                    获取服务器返回数据内容

+HTTPEXGET: 8                   服务器返回的数据长度
XXXXX................           服务器返回的数据内容
OK
                                没有等到新的数据上报
AT+HTTPEXGET                    再次获取也没有得到数据,请求结束

OK
AT+HTTPTERM                     结束当前HTTP会话

OK

小量数据POST请求

AT+SAPBR=3,1,"CONTYPE","GPRS"   设置HTTP功能的承载类型

OK  
AT+SAPBR=3,1,"APN",""   设置pdp承载参数之APN

OK  
AT+SAPBR=1,1    激活该承载的GPRS PDP上下文

OK  

AT+HTTPINIT HTTP协议栈初始化

OK  
AT+HTTPPARA="CID",1 设置HTTP会话参数:CID

OK  
AT+HTTPPARA="URL","http://httpbin.org/post"

OK
AT+HTTPDATA=4,100000                  post数据输入

DOWNLOAD
                                      输入数据1234
OK
AT+HTTPACTION=1                       执行POST

OK

+HTTPACTION: 1,200,350                服务器响应POST请求
AT+HTTPREAD                           读取服务器返回内容

+HTTPREAD: 350
{
  "args": {}, 
  "data": "1231",                    返回数据12134
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Content-Length": "4", 
    "Host": "httpbin.org", 
    "User-Agent": "YCOM_MODULE", 
    "X-Amzn-Trace-Id": "Root=1-676e3fd1-2e367ddf54a60eb32fdb470f"
  }, 
  "json": 1231, 
  "origin": "36.113.71.171", 
  "url": "http://httpbin.org/post"
}

OK
AT+HTTPTERM                     结束当前HTTP会话

OK

大量数据POST请求

POST大量数据请求,也和大量数据GET请求一样,是指服务器返回数据超过28KB的情况。

AT+SAPBR=3,1,"CONTYPE","GPRS"   设置HTTP功能的承载类型

OK  
AT+SAPBR=3,1,"APN",""   设置pdp承载参数之APN

OK  
AT+SAPBR=1,1    激活该承载的GPRS PDP上下文

OK  

AT+HTTPINIT HTTP协议栈初始化

OK  
AT+HTTPPARA="CID",1 设置HTTP会话参数:CID

OK  
AT+HTTPPARA="URL","http://httpbin.org/post"

OK
AT+HTTPEXACTION=1,1000                       初始化HTTP POST请求

OK

+HTTPEXACTION: 1
AT+HTTPEXPOST=1000,10000                    输入POST数据,并执行POST请求

> 
OK

+HTTPEXACTION: 1,200,1349                   POST请求结果

+HTTPEXGET                                  服务器返回数据,主动上报
AT+HTTPEXGET                                读取服务器返回数据

+HTTPEXGET: 1349
{
  "args": {}, 
  "data": "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Content-Length": "1000", 
    "Host": "httpbin.org", 
    "User-Agent": "YCOM_MODULE", 
    "X-Amzn-Trace-Id": "Root=1-676e4623-275162c82862cb236c264937"
  }, 
  "json": null, 
  "origin": "36.113.71.171", 
  "url": "http://httpbin.org/post"
}

OK

AT+HTTPTERM

OK

下载文件

AT+SAPBR=3,1,"CONTYPE","GPRS"   设置HTTP功能的承载类型

OK  
AT+SAPBR=3,1,"APN",""   设置pdp承载参数之APN

OK  
AT+SAPBR=1,1    激活该承载的GPRS PDP上下文

OK  

AT+HTTPINIT HTTP协议栈初始化

OK  
AT+HTTPPARA="CID",1 设置HTTP会话参数:CID

OK  
AT+HTTPPARA="URL","http://httpbin.org/bytes/2900"

OK
AT+HTTPGETTOFS="http.bin"   将服务器返回内容存储到文件http.bin中

OK

+HTTPGETTOFS: 200,2900      执行完成
AT+FSFLSIZE="http.bin"      查询文件大小

+FSFLSIZE: 2900             

OK