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?

  • HTTPSSL: OK

测试命令

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(必选参数) 注:同时支持 HTTPSHTTP 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

写成\rn

<file://r/n>`__ 值 得一提的是有些 PC 串口工具,例如 SSCOM,会将 :raw-latex:`r

和`:raw-latex:

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 任务:AT+HTTPTERM

语法规则:

命令类型

语法

返回

设置命令

AT+HTTPTERM

OK

测试命令

AT+HTTPTERM=?

OK

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 去激活失败