AT模块 5: HTTP AT 命令(HTTP AT Commands)
跳转到导航
跳转到搜索
HTTP AT 命令
指令列表
| 指令 | 描述 |
|---|---|
AT+HTTPCLIENT
|
发送 HTTP Client 请求 |
AT+HTTPGETSIZE
|
获取 HTTP 资源大小 |
AT+HTTPCGET
|
获取 HTTP 资源 |
AT+HTTPCPOST
|
发送指定长度的 HTTP POST 数据 |
AT+HTTPCPUT
|
发送指定长度的 HTTP PUT 数据 |
AT+HTTPURLCFG
|
设置/获取长 HTTP URL |
AT+HTTPSSLCFG
|
设置/获取 HTTPS 证书 |
AT+HTTPRECVMODE
|
查询/设置 socket 接收模式 |
AT+HTTPRECVDATA
|
在被动接收模式下获取 HTTP 数据 |
AT+HTTPRECVLEN
|
在被动接收模式下获取 HTTP 数据长度 |
AT+HTTPRECVBUF
|
查询/设置 HTTP 接收缓冲区大小 |
HTTP AT 命令描述
AT+HTTPCLIENT
发送 HTTP Client 请求。
设置命令
命令:
AT+HTTPCLIENT=<linkid>,<opt>,<content-type>,<"url">,[,<"data">]
响应:
OK +HTTPCGET:<linkid>,<size>,<data> +HTTPSTATUS:<linkid>,<err_code> 或 +HTTPCPOST:<linkid>,<size>,<data> +HTTPSTATUS:<linkid>,<err_code> 或 +HTTPCPUT:<linkid>,<size>,<data> +HTTPSTATUS:<linkid>,<err_code>
参数
- <linkid>: HTTP Client 请求的链路 ID。范围:[0~2]
- <opt>: HTTP Client 请求的方法。
* 1: HEAD * 2: GET * 3: POST * 4: PUT
- <content-type>: HTTP Client 请求的数据类型。
* 0: application/x-www-form-urlencoded * 1: application/json * 2: multipart/form-data * 3: text/xml
- <url>: HTTP/HTTPS URL。
- : 如果 <opt> 是 POST 请求,此参数保存您发送到 HTTP 服务器的数据。
如果不是,此参数不存在,这意味着无需输入逗号来表示此参数。
- <err_code>: 失败原因
* 0: 文件成功接收 * 1: 未知错误 * 2: 连接服务器失败 * 3: 解析服务器主机名失败 * 4: 连接被远程服务器意外关闭 * 5: 连接超时(服务器未及时响应) * 6: 服务器响应错误代码 * 7: 本地内存错误 * 8: 本地中止 * 9: Content length 不匹配
注意事项
- 如果包含 URL 的整个命令长度超过 256 字节,请先使用 AT+HTTPURLCFG 命令预设 URL,然后将此命令的 <"url"> 参数设置为 ""。
- 如果 url 参数不为空,HTTP Client 将使用它并忽略 host 参数和 path 参数;如果 url 参数被省略或为空字符串,HTTP Client 将使用 host 参数和 path 参数。
- 该命令不支持重定向。从服务器获取状态码 301(永久重定向)或 302(临时重定向)后,AT 不会自动重定向到新的 URL 地址。您可以使用某些工具获取实际的 URL,然后使用此命令访问。
- 如果包含 <"data"> 的整个命令长度超过 256 字节,请使用 AT+HTTPCPOST 命令。
- 当启用被动模式时,响应将变为 +HTTPC:<linkid>,<size>。
示例
// HEAD 请求 AT+HTTPCLIENT=0,1,0,"http://httpbin.org/get" // GET 请求 AT+HTTPCLIENT=0,2,0,"http://httpbin.org/get" // POST 请求 AT+HTTPCLIENT=0,3,0,"http://httpbin.org/post","field1=value1&field2=value2" // HTTPS HEAD 请求 AT+HTTPCLIENT=0,1,0,"https://httpbin.org/get"
AT+HTTPGETSIZE
获取 HTTP 资源大小。
设置命令
命令:
AT+HTTPGETSIZE=<linkid>,<"url">[,<timeout>]
响应:
OK +HTTPGETSIZE:<linkid>,<size> +HTTPSTATUS:<linkid>,<err_code>
参数
- <linkid>: HTTP Client 请求的链路 ID。
- <url>: HTTP/HTTPS URL。它是字符串参数,应用引号括起来。
- <timeout>: 网络超时。单位:毫秒。默认值:5000。范围:[0,180000]。
- <size>: HTTP 资源大小。
注意事项
- 如果包含 URL 的整个命令长度超过 256 字节,请先使用 AT+HTTPURLCFG 命令预设 URL,然后将此命令的 <"url"> 参数设置为 ""。
示例
AT+HTTPGETSIZE=0,"https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png" OK // 响应 +HTTPGETSIZE:0,1575 +HTTPSTATUS:0,0
AT+HTTPCGET
获取 HTTP 资源。
设置命令
命令:
AT+HTTPCGET=<linkid>,<"url">[,<timeout>]
响应:
OK +HTTPCGET:<linkid>,<size>,<data> +HTTPSTATUS:<linkid>,<err_code>
参数
- <linkid>: HTTP Client 请求的链路 ID。
- <url>: HTTP/HTTPS URL。它是字符串参数,应用引号括起来。
- <timeout>: 网络超时。单位:毫秒。默认值:5000。范围:[0,180000]。
- <size>: HTTP 资源大小。
注意事项
- 如果包含 URL 的整个命令长度超过 256 字节,请先使用 AT+HTTPURLCFG 命令预设 URL,然后将此命令的 <"url"> 参数设置为 ""。
- 当启用被动模式时,响应将变为 +HTTPC:<linkid>,<size>。
AT+HTTPCPOST
发送指定长度的 HTTP POST 数据。
设置命令
命令:
AT+HTTPCPOST=<linkid>,<"url">,<length>
响应:
OK >
符号 > 表示 AT 已准备好接收串口数据,您现在可以输入数据。当满足由参数 <length> 确定的消息长度要求时,传输开始。
如果传输成功,AT 返回:
SEND OK
否则,返回:
SEND FAIL
参数
- <linkid>: HTTP Client 请求的链路 ID。
- <url>: HTTP/HTTPS URL。它是字符串参数,应用引号括起来。
- <length>: 要 POST 的 HTTP 数据长度。最大长度等于系统可分配的堆大小。
注意事项
- 如果包含 URL 的整个命令长度超过 256 字节,请先使用 AT+HTTPURLCFG 命令预设 URL,然后将此命令的 <"url"> 参数设置为 ""。
- 此命令的 content-type 默认类型为 application/x-www-form-urlencoded。
- 当启用被动模式时,响应将变为 +HTTPC:<linkid>,<size>。
AT+HTTPCPUT
发送指定长度的 HTTP PUT 数据。
设置命令
命令:
AT+HTTPCPUT=<linkid>,<"url">,<content_type>,<length>
响应:
OK >
符号 > 表示 AT 已准备好接收串口数据,您现在可以输入数据。当满足由参数 <length> 确定的消息长度要求时,传输开始。
如果传输成功,AT 返回:
SEND OK
否则,返回:
SEND FAIL
参数
- <linkid>: HTTP Client 请求的链路 ID。
- <url>: HTTP/HTTPS URL。它是字符串参数,应用引号括起来。
- <content_type>: HTTP Client 请求的数据类型。
* 0: application/x-www-form-urlencoded * 1: application/json * 2: multipart/form-data * 3: text/xml
- <length>: 要 PUT 的 HTTP 数据长度。最大长度等于系统可分配的堆大小。
注意事项
- 如果包含 URL 的整个命令长度超过 256 字节,请先使用 AT+HTTPURLCFG 命令预设 URL,然后将此命令的 <"url"> 参数设置为 ""。
- 当启用被动模式时,响应将变为 +HTTPC:<linkid>,<size>。
AT+HTTPURLCFG
设置/获取长 HTTP URL。
查询命令
命令:
AT+HTTPURLCFG=0?
响应:
+HTTPURLCFG:<linkid>,<url length>,<url> OK
设置命令
命令:
AT+HTTPURLCFG=<linkid>,<url length>
响应:
OK >
此响应表示 AT 已准备好接收串口数据。您现在应该输入 URL,当 URL 长度达到 <url length> 值时,系统返回:
SEND OK
否则,返回:
SEND FAIL
参数
- <linkid>: HTTP Client 请求的链路 ID。
- <url length>: HTTP URL 长度。单位:字节。
* 0: 清除 HTTP URL 配置。
* [8,8192]: 设置 HTTP URL 配置。
- <url>: HTTP/HTTPS URL 数据。
AT+HTTPSSLCFG
设置/获取 HTTPS 证书。
查询命令
命令:
AT+HTTPSSLCFG=0?
响应:
+HTTPSSLCFG:<linkid>,<scheme>,[<"cert_file">][,<"key_file">][,<"ca_file">] OK
设置命令
命令:
AT+HTTPSSLCFG=<linkid>,<scheme>,[<"cert_file">][,<"key_file">][,<"ca_file">]
响应:
OK
参数
- <linkid>: HTTP Client 请求的链路 ID。
- <scheme>:
* 0: HTTPS 不验证证书。 * 1: HTTPS 验证服务器证书。 * 2: HTTPS 提供客户端证书。 * 3: HTTPS 验证服务器证书并提供客户端证书。
- <"cert_file">: 证书的文件名。
- <"key_file">: 私钥的文件名。
- <"ca_file">: 客户端用于验证服务器的 CA 文件名。
AT+HTTPRECVMODE
功能:查询/设置 HTTP 接收模式。
查询命令
功能:
查询 HTTP 接收模式。
命令:
AT+HTTPRECVMODE?
响应:
+HTTPRECVMODE:<mode> OK
设置命令
命令:
AT+HTTPRECVMODE=<mode>
响应:
OK
参数
- <mode>: HTTP 数据的接收模式。默认值:0。
* 0: 主动模式。BLC-AT 将立即把所有接收到的 HTTP 数据发送到主机 MCU,并带有 "+HTTPC" 头。
* 1: 被动模式。BLC-AT 将把接收到的 HTTP 数据保存在内部缓冲区(HTTP 接收缓冲区,默认为 1024 字节),并等待主机 MCU 读取。如果缓冲区已满,socket 传输将被阻塞。
注意事项
- 此参数适用于所有 linkids。
- <len> 是缓冲区中 socket 数据的总长度。
- 一旦有 +HTTPC 报告,您应该通过运行 AT+HTTPRECVDATA 来读取数据。否则,在读取前一个 +HTTPC 之前,不会向主机 MCU 报告下一个 +HTTPC。
- 断开连接时,缓存仍然保存。
示例
AT+HTTPRECVMODE=1
AT+HTTPRECVBUF
功能:查询/设置 HTTP 接收缓冲区大小。
设置命令
命令:
AT+HTTPRECVBUF=<size>
响应:
+HTTPRECVBUF OK
参数
- <size>: 设置缓冲区大小,单位字节。
查询命令
命令:
AT+HTTPRECVBUF?
响应:
返回缓冲区大小,默认缓冲区大小为 15360(此值不会占用系统的堆内存)。
+HTTPRECVBUF:<size> OK
注意事项
- 此值的理论上限是 lwip 堆的大小。
AT+HTTPRECVDATA
在被动接收模式下获取 HTTP 数据。
设置命令
命令:
AT+HTTPRECVDATA=<linkid>,<len>
响应:
+HTTPRECVDATA:<actual_len>,<data> OK
参数
- <linkid>: HTTP Client 请求的链路 ID。
- <mode>: socket 数据的接收模式。默认值:0。
- <len>: 最大值为 0x7fffffff。如果接收到的数据的实际长度小于 len,则返回实际长度。
- <actual_len>: 您实际获得的数据长度。
- : 您想要获取的数据。
示例
AT+HTTPRECVMODE=1 // 例如,如果主机 MCU 收到一条消息,显示在 No.0 连接中接收到 100 字节数据, // 该消息将为 "+HTTPC:0,100"。 // 然后您可以使用以下命令读取这 100 字节数据。 AT+HTTPRECVDATA=0,100
AT+HTTPRECVLEN
功能:在被动接收模式下获取 HTTP 数据长度。
查询命令
功能:
查询为连接缓冲的整个数据的长度。
命令:
AT+HTTPRECVLEN=0?
响应:
+HTTPRECVLEN:<linkid>,<data length of link> OK
示例
AT+HTTPRECVLEN=0? +CIPRECVLEN:0,100 OK