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通路IDAT+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