3.1.3 HTTP/HTTPS¶
作者:闫国梁 最后修改时间:2020年6月23日 ## 概述: 模块内置http client,可以实现http请求组包,结果处理的等功能。有AT,LUAT,CSDK和开源DTU等多种开发方式。 ## AT模式 ## 初始化 HTTP 服务:AT+HTTPINIT
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
执行命令 |
AT+HTTPINIT |
OK |
测试命令 |
AT+HTTPINIT=? |
OK |
注意事项 |
在使用HTTP服务前,应该先用AT+HTTPINIT命令来初始化HTTP协议栈 |
启用 SSL:AT+HTTPSSL¶
语法规则:
命令类型 |
语法 |
返回 |
|
---|---|---|---|
设置命令 |
AT+HTTPSSL= |
OK |
|
读取命令 |
AT+HTTPSSL? |
|
|
测试命令 |
AT+HTTPSSL=? |
+HTTPSSL: (0-1) OK |
|
参数 |
定义 |
取值 |
对取值的说明 |
HTTP SSL 功能开关 |
0 |
关闭 SSL 功能 |
|
1 |
开启 SSL 功能 |
设置 HTTP 参数值:AT+HTTPPARA¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+HTTPPARA= , |
OK |
查询命令 |
AT+HTTPPARA? |
+HTTPPARA: list of :) OK |
测试命令 |
AT+HTTPPARA=? |
+HTTPPARA: “HTTPParamTag”,” HTTPParamValue” OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
:H TTP参数,包括: |
|||
“CID” |
承载上 下文号码(必选参 数) |
1~3 |
|
“URL” |
HTTP 或 HTTPS URL(必选参数) 注:同时支持 HTTPS 和 HTTP URL |
“http://serve r/path:tcpPort” 或: “https://serve r/path:tcpPort” |
Server: FQDN or IP-address Path: path of file or directory tcpPort: 如果参数省略 ,将服务连接到 HTTP 默认端口 80。 参考”IETF-RFC 261 |
“UA” |
应用程序必须 设置用户代理来 识别移动终端。 通常操作系统和 软件版本信息在 设置时都会携带 浏览器标识符。 |
默认值为:合宙 module |
|
“PROIP” |
HTTP 代理服务器的 IP 地址 |
||
“PROPORT” |
HTTP 代 理 服 务 器 的 PORT |
||
“REDIR” |
作为 HTTP 客户端 时用此标志控制 重定向机制。如 果此标记设置为 1,当服务器发 送重定向码(范围 30x)时,客户 端自动发送新的 HTTP 请求 |
默认值为 0(无定向) |
|
“BREAK” |
HTTP 方法 ”GET” 的参数,整数型 |
获取从断点 到结束点的部分 数据,注意不是 所 有 的 HTTP 服 务 器 都 支 持 参数。BREAK 最小值是 0。 |
|
“BREAKEND” |
和 “BREAK”一起使用 ,用于断点续传 功能。整数型。 |
如果“ BREAKEND”大于“B REAK”,续传的范 围从“BREAKEND” 到“BREAK”。如果 “BREAKEND”小于 “BREAK”,续传的 范围从“BREAK”到 文件结尾。如果 “BREAKEN D”和“BREAK”均为 0,将不 会续传。 |
|
“USER_DEFINED” |
用户自定义参数 ,为了兼容合宙 2G 模块 |
用户自定义参数 的取值。例如: AT+HTTPPARA= “USER_DEFINED”, “Content-type: js on-user-define” 注:如果需 要设置多条用户 自定义参数,则 一条一条地输入 。后面输入的不 会覆盖以前的。 |
|
“USERDATA” |
用户自定 义参数,作用同 “USER _DEFINED”,为了 |
用户自定义参数 的取值。例如: AT+HTTPPARA= “USERDATA”,”Con |
|
兼容 SIMCOM 模块 |
tent-type: js on-user-define” 注:如果想 设置多条用户定 义参数,则多条 参数之间可以用 :raw-latex:`\r\ n `连接。例如: AT+HTTPPARA= “USERDATA”,“Con tent-Type :application/js on:raw-latex:`rnAPP KEY:FW” 在 MCU 程序中需要将: raw-latex:rn
<file://r/n>`__ 值 得一提的是有些 PC 串口工具,例如 SSCOM,会将 :raw-latex:`r
n `当做控制字 符处理,所以也 需要将:raw-late x:rn 写成\rn <file:// r/n>`__而另外 一些工具,例如 XCO M,不会将:raw-l atex:r 和:ra w-latex:n `当 做控制字符处理 ,所以直接输入 :r aw-latex:rn` |
||
: 的取值。 注: “USER_DEFINED” 和“USERDA TA”中内嵌的双引 号,用22表达。 |
举例:
命令(→) /返回(←) |
实例 |
解 释和 说明 |
---|---|---|
→ |
AT+HTTPPARA? |
|
← |
+HTTPPARA: CID: 1 URL: UA: AM_MODULE PROIP: 0.0.0.0 PROPORT: 0 REDIR: 0 BREAK; 0 BREAKEND: 0 TIMEOUT: 120 CONTENT: USERDATA: OK |
写数据:AT+HTTPDATA¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+HTTPDATA=, |
DOWNLOAD OK |
测试命令 |
AT+HTTPDATA=? |
+HTTPDATA: (取值列表),(取值列表) OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
POST 数据的大小 |
1-102400 |
最大长度为 102400 |
|
0 |
后面一个参 数不判断,相当 于把内容清除掉 |
||
输入 数据的最长时间 |
1000-120000 |
单位:ms |
|
注: 强烈建议设置的 时间要能够全部 输入所有的数据 ,下载数据的真 实大小不能大于 |
HTTP 方式激活:AT+HTTPACTION¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+HTT PACTION= |
OK 后面紧跟 Unsolicited Result Code: +HTTPACTION: ,, |
或如果错误与 ME 功能相关,则返回: +CME ERROR: 后面紧跟 Unsolicited Result Code: +HTTPACTION: ,, |
||
测试命令 |
AT+HTTP ACTION=? |
+HTTPACTION: (0-2) OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
HTTP 方法说明 |
0 |
GET |
|
1 |
POST |
||
2 |
HEAD |
||
得到的数据长度 |
整数型 |
||
HTTP 状 态码,由远端服务器响应, 参考 TTP1.1(RFC2616) |
100 |
继续(Continue) |
|
101 |
交换协议(Switching Protocols) |
||
200 |
确定(OK) |
||
201 |
已创建(Created) |
||
202 |
已接受(Accepted) |
||
203 |
非权 威消息(Non-Authoritative Information) |
204 |
无内容(No Content) |
---|---|
205 |
重置内容(Reset Content) |
206 |
部分内容(Partial Content) |
300 |
多重选择(Multiple Choices) |
301 |
永久删除(Moved Permanently) |
302 |
找到(Found ) |
303 |
参考其他(See Other) |
304 |
未修改(Not Modified) |
305 |
使用代理服务器(Use Proxy) |
307 |
临时重定向(Temporary Redirect ) |
400 |
错误请求(Bad Request) |
401 |
未授权(Unauthorized) |
402 |
付费请求(Payment Required) |
403 |
禁止(Forbidden) |
404 |
找不到(Not Found) |
405 |
方法不被允许(Method not Allowed) |
406 |
不可接受(Not Acceptable) |
407 |
要 求 进 行 代 理 身 份 认 证 (Proxy AuthenticationRequired) |
408 |
请求超时 (Request Time-out) |
409 |
冲突(Conflict) |
410 |
所请求资源不在服务器上有效,且不知道转发地址(Gone) |
411 |
需要输入长度(Length Required) |
412 |
前提条件失败 (Precondition Failed) |
413 |
请求实体太大(Request Entity Too Large) |
414 |
请求URI太长(Request-URI Too Large) |
415 |
媒体类型不支持(Unsupported Media Type) |
416 |
所 请 求 的 范 围 无 法 满 足(Requested range notsatisfiable) |
417 |
执行失败(Expectation Failed) |
500 |
内部服务器错误(Internal Server Error) |
501 |
未执行 (Not Implemented) |
502 |
网关错误(Bad Gateway) |
503 |
服务不可用(Service Unavailable) |
504 |
网关超时(Gateway Time-out) |
505 |
HTTP 版本不支持(HTTP Version not supported) |
600 |
非 HTTP PDU 格式(Not HTTP PDU) |
601 |
网络错误(Network Error) |
602 |
内存不足(No memory) |
603 |
DNS 错误(DNS Error) |
604 |
栈忙(Stack Busy) |
605 |
SSL建立通道失败 |
606 |
SSL通讯警告错误 |
查询 HTTP 服务响应:AT+HTTPREAD¶
语法规则:
命 令 类 型 |
语法 |
返回 |
---|---|---|
设 置 命 令 |
AT+HTTPREAD= , |
+HTTPREAD: OK |
执 行 命 令 |
AT+HTTPREAD |
+HTTPREAD: OK 读取 AT+HTTPACTION=0 或 AT+HTTPDATA 命令的所有响 应数据。 执行命令用来将 HTTP 服务器的响应输出到 UART 或者输出准备好 POST 到服务器的数据。 |
测 试 命 令 |
AT+HTTPREAD=? |
+HTTPREAD: (list of supported s),( list of supporteds) OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
实际输出数据长度 |
|||
HTTP 服务器对AT+HTTPACTION=0命令 的响应数据 |
|||
输出数据的起点 |
0~319488 |
单位:字节 |
|
输出数据的长度 |
1~319488 |
单位:字节 |
查询 HTTP 头信息:AT+HTTPHEAD¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
执行命令 |
AT+HTTPHEAD |
+HTTPREAD: OK |
测试命令 |
AT+HTTPHEAD=? |
OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
头信息的实际长度 |
|||
头信息 |
保存 HTTP 应用上下文:AT+HTTPSCONT¶
执行命令保存包含 AT 命令参数的 HTTP 应用上下文,当系统重启时,参数将自动载入。
查询命令返回 HTTP 应用上下文。语法规则:
命令 类型 |
语法 |
返回 |
---|---|---|
执行 命令 |
AT+H TTPSCONT |
+HTTPREAD: (list of supported s),( list of supporteds) OK |
查询 命令 |
AT+HT TPSCONT? |
+HTTPSCONT: CID: URL: UA: PROIP: PROPORT: REDIR: BREAK: BREAKEND: USERDATA: OK |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
HTTP 上下文保存模式 |
0 |
保存,值取自 NVRAM |
|
1 |
未保存,值取自 RAM |
HTTP 错误码:ERROR:¶
HTTP 错误码会以 ERROR:形式上报。
定义:
取值 |
英文说明 |
中文说明 |
---|---|---|
0 |
Unknown session id |
未知的会话 ID |
1 |
File is too short |
文件的内容太短 |
2 |
DNS is fail |
域名解析失败 |
3 |
HTTP is busy |
HTTP 任务正忙 |
4 |
Socket is wrong |
套接字失败 |
5 |
Connect fail |
连接失败 |
6 |
File is error |
文件错误 |
7 |
Connection is closed |
连接已关闭 |
8 |
Connection is destroyed |
连接已销毁 |
9 |
HTTP header is not found |
HTTP 头不存在 |
10 |
HTTP authentication scheme is not supported |
HTTP 认证机制不支持 |
11 |
PDP active is wrong |
PDP 激活失败 |
12 |
Param is wrong |
参数有误 |
13 |
No buffer |
缓冲区不足 |
14 |
PDP deactive is wrong |
PDP 去激活失败 |