HTTP AT 命令集
备注
HTTP AT 命令集默认未启用。
参考 配置 SDK (menuconfig) 进入
CONFIG AT CMD
配置,勾选Enable HTTP
来启用 HTTP AT 命令集。
AT+HTTPCONF
功能说明
设置 HTTP 全局配置,设置一次后永久生效
命令格式
AT+HTTPCONF=<timeout>[,<port>]
响应格式
成功响应:
OK
错误响应:
ERROR:<error_no>
参数
- <timeout>:
HTTP接收/发送超时(秒)
默认值:10
- <port>:
HTTP服务器端口
范围:[0,65535](默认值为 0)
0:HTTP 使用 80 端口,HTTPS 使用 443 端口
错误代码
1: 参数错误
示例
设置 HTTP 接收/发送超时为 1 秒,端口为 12345:
AT+HTTPCONF=1,12345 OK
恢复默认设置:
AT+HTTPCONF=10,0 OK
AT+HTTPHEADER
功能说明
在透传(TT)模式下设置 HTTP 全局请求头。关于透传模式的介绍请参考 透传(TT)模式 。这些 HTTP 请求头主要用于 GET/POST/PUT/DELETE 等方法。请求头数量最大可以设置 10 条。
一旦设置,所有后续执行的 HTTP AT 相关命令都会在各自的请求头域中使用这些请求头。用户可以使用命令 AT+HTTPHEADER=0 来清除所有已经设置的请求头,这样后续执行的 HTTP AT 相关命令在各自的请求头域中不会再使用这些请求头,除非重新设置。
备注
该命令仅支持在 主控控制模式 下使用。
命令格式
AT+HTTPHEADER=<req_header_len>
响应格式
成功响应:
>>>
<req_header>
OK
错误响应:
ERROR:<error_no>
参数
- <req_header_len>:
单个 HTTP 请求头的长度
0:清除重置所有已设置的 HTTP 请求头
无长度限制
- <req_header>:
实际的 HTTP 请求头字符串
错误代码
1: 参数错误
2: 内存分配失败
3: 在TT模式下获取数据失败
示例
设置两个常用的请求头:
AT+HTTPHEADER=17 >>> Connection: close OK AT+HTTPHEADER=30 >>> Accept-Encoding: gzip, deflate OK
清除所有请求头:
AT+HTTPHEADER=0 OK
AT+HTTPQUERY
功能说明
查询 HTTP 全局配置,包括 HTTP 接收/发送超时、服务器端口和所有已经设置的请求头
命令格式
AT+HTTPQUERY
响应格式
成功响应:
Global HTTP configuration:
http_timeout: <HTTP 接收/发送超时>
http_server_port: <服务器端口>
http_req_header_cnt: <请求头数量>
http_req_header list:
<请求头1>
<请求头2>
...
OK
错误响应:
ERROR:<error_no>
错误代码
1: 无需输入参数
示例
查询 HTTP 配置:
AT+HTTPQUERY
Global HTTP configuration:
http_timeout: 10
http_server_port: 0
http_req_header_cnt: 2
http_req_header_list:
Connection: close
Accept-Encoding: gzip, deflate
OK
AT+HTTPGET
功能说明
获取 HTTP 资源
命令格式
AT+HTTPGET=<host>,<path>,<conn_type>[,<cert_index>][,<req_header_cnt>,<req_header>...<req_header>]
备注
如果该命令有在参数里面携带请求头,那么这些请求头会和 AT+HTTPHEADER 配置的全局请求头一起添加到 HTTP 报文中。
响应格式
成功响应:
+HTTPGET: HEADER LEN = <消息头长度>
+HTTPGET: HEADER DUMP START
<消息头内容>
+HTTPGET: HEADER DUMP END
+HTTPGET: BODY DUMP START
<消息体内容>
+HTTPGET: BODY DUMP END
+HTTPGET: BODY LEN = <消息体长度>
OK
错误响应:
ERROR:<error_no>
参数
- <host>:
目标主机,输入参数中不需要携带
http://
或者https://
前缀支持域名或IPv4地址
最大长度:256字符
- <path>:
资源路径
默认值:”/”
- <conn_type>:
HTTP 连接类型
1: HTTP
2: HTTPS(不校验证书)
3: HTTPS(用CA证书验证服务器证书)
4: HTTPS(提供客户端证书给服务器验证)
5: HTTPS(双向认证,3和4的合集)
- <cert_index>:
安全证书套件索引,参考 AT 安全证书
[1-10]
仅当 <conn_type> 是 3、4、5 时需要
- <req_header_cnt>:
实际请求头的总数
- <req_header>:
实际的请求头字符串,请求头数量由<req_header_cnt>决定,仅在当前方法中头部携带
错误代码
1: 参数错误
2: 内存分配失败
3: 读取安全证书套件失败
4: 发送 HTTP GET 头失败
5: 读取 HTTP 响应失败
示例
GET 请求示例:
AT+HTTPGET=httpbin.org,/get,1
+HTTPGET: HEADER LEN = 230
+HTTPGET: HEADER DUMP START
HTTP/1.1 200 OK
Date: Mon, 06 Jan 2025 07:53:34 GMT
Content-Type: application/json
Content-Length: 196
Connection: keep-alive
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
+HTTPGET: HEADER DUMP END
+HTTPGET: BODY DUMP START
{
"args": {},
"headers": {
"Host": "httpbin.org",
"X-Amzn-Trace-Id": "Root=1-677b8bfe-6faa4a9d7264e26b46397567"
},
"origin": "98.98.48.11",
"url": "http://httpbin.org/get"
}
+HTTPGET: BODY DUMP END
+HTTPGET: BODY LEN = 196
OK
AT+HTTPPOST
功能说明
用 透传(TT)模式 发送 HTTP POST 请求
备注
该命令仅支持在 主控控制模式 下使用。
命令格式
AT+HTTPPOST=<host>,<path>,<conn_type>[,<cert_index>],<body_size>[,<req_header_cnt>,<req_header>...<req_header>]
备注
如果该命令有在参数里面携带请求头,那么这些请求头会和 AT+HTTPHEADER 配置的全局请求头一起添加到 HTTP 报文中。
响应格式
成功响应:
>>>
<Post消息内容>
+HTTPPOST: HEADER LEN = <消息头长度>
+HTTPPOST: HEADER DUMP START
<消息头内容>
+HTTPPOST: HEADER DUMP END
+HTTPPOST: BODY DUMP START
<消息体内容>
+HTTPPOST: BODY DUMP END
+HTTPPOST: BODY LEN = <消息体长度>
OK
错误响应:
ERROR:<error_no>
参数
- <host>:
目标主机,输入参数中不需要携带
http://
或者https://
前缀支持域名或 IPv4 地址
最大长度:256字符
- <path>:
资源路径
默认值:”/”
- <conn_type>:
HTTP 连接类型
1: HTTP
2: HTTPS(不校验证书)
3: HTTPS(用CA证书验证服务器证书)
4: HTTPS(提供客户端证书给服务器验证)
5: HTTPS(双向认证,3和4的合集)
- <cert_index>:
安全证书套件索引,参考 AT 安全证书
[1-10]
仅当 <conn_type> 是 3、4、5 时需要
- <body_size>:
要 POST 的 HTTP 数据长度
长度无限制
- <req_header_cnt>:
实际请求头的总数
- <req_header>:
实际的请求头字符串,请求头数量由<req_header_cnt>决定,仅在当前方法中头部携带
错误代码
1: 参数错误
2: 内存分配失败
3: 读取安全证书套件失败
4: 发送 HTTP POST 头失败
5: TT模式下获取数据失败
6: 发送 HTTP POST 主体数据失败
7: 读取 HTTP 响应失败
示例
POST请求示例:
AT+HTTPPOST=httpbin.org,/post,2,,35,2,Connection: close,User-Agent: Ameba_iot
>>>
param1=test_data1¶m2=test_data2
+HTTPPOST: HEADER LEN = 225
+HTTPPOST: HEADER DUMP START
HTTP/1.1 200 OK
Date: Mon, 06 Jan 2025 07:49:09 GMT
Content-Type: application/json
Content-Length: 359
Connection: close
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
+HTTPPOST: HEADER DUMP END
+HTTPPOST: BODY DUMP START
{
"args": {},
"data": "param1=test_data1¶m2=test_data2",
"files": {},
"form": {},
"headers": {
"Content-Length": "35",
"Host": "httpbin.org",
"User-Agent": "Ameba_iot",
"X-Amzn-Trace-Id": "Root=1-677b8af2-73ea1c6e376e5d1e672893b5"
},
"json": null,
"origin": "98.98.48.11",
"url": "https://httpbin.org/post"
}
+HTTPPOST: BODY DUMP END
+HTTPPOST: BODY LEN = 357
OK
AT+HTTPPUT
功能说明
用 透传(TT)模式 发送 HTTP PUT 请求
备注
该命令仅支持在 主控控制模式 下使用。
命令格式
AT+HTTPPUT=<host>,<path>,<conn_type>[,<cert_index>],<body_size>[,<req_header_cnt>,<req_header>...<req_header>]
备注
如果该命令有在参数里面携带请求头,那么这些请求头会和 AT+HTTPHEADER 配置的全局请求头一起添加到 HTTP 报文中。
响应格式
成功响应:
>>>
<Put消息内容>
+HTTPPUT: HEADER LEN = <消息头长度>
+HTTPPUT: HEADER DUMP START
<消息头内容>
+HTTPPUT: HEADER DUMP END
+HTTPPUT: BODY DUMP START
<消息体内容>
+HTTPPUT: BODY DUMP END
+HTTPPUT: BODY LEN = <消息体长度>
OK
错误响应:
ERROR:<error_no>
参数
- <host>:
目标主机,输入参数中不需要携带
http://
或者https://
前缀支持域名或 IPv4 地址
最大长度:256 字符
- <path>:
资源路径
默认值:”/”
- <conn_type>:
HTTP 连接类型
1: HTTP
2: HTTPS(不校验证书)
3: HTTPS(用CA证书验证服务器证书)
4: HTTPS(提供客户端证书给服务器验证)
5: HTTPS(双向认证,3和4的合集)
- <cert_index>:
安全证书套件索引,参考 AT 安全证书
[1-10]
仅当 <conn_type> 是 3、4、5 时需要
- <body_size>:
要 PUT 的 HTTP 数据长度
长度无限制
- <req_header_cnt>:
实际请求头的总数
- <req_header>:
实际的请求头字符串,请求头数量由 <req_header_cnt> 决定,仅在当前方法中头部携带
错误代码
1: 参数错误
2: 内存分配失败
3: 读取安全证书套件失败
4: 发送HTTP PUT头失败
5: TT模式下获取数据失败
6: 发送HTTP PUT主体数据失败
7: 读取 HTTP 响应失败
示例
PUT请求示例:
AT+HTTPPUT=httpbin.org,/put,2,,35,2,Connection: close,User-Agent: Ameba_iot
>>>
param1=test_data1¶m2=test_data2
+HTTPPUT: HEADER LEN = 225
+HTTPPUT: HEADER DUMP START
HTTP/1.1 200 OK
Date: Mon, 06 Jan 2025 07:50:05 GMT
Content-Type: application/json
Content-Length: 358
Connection: close
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
+HTTPPUT: HEADER DUMP END
+HTTPPUT: BODY DUMP START
{
"args": {},
"data": "param1=test_data1¶m2=test_data2",
"files": {},
"form": {},
"headers": {
"Content-Length": "35",
"Host": "httpbin.org",
"User-Agent": "Ameba_iot",
"X-Amzn-Trace-Id": "Root=1-677b8b2a-30de8616008ca27e176ccda2"
},
"json": null,
"origin": "98.98.48.11",
"url": "https://httpbin.org/put"
}
+HTTPPUT: BODY DUMP END
+HTTPPUT: BODY LEN = 356
OK
AT+HTTPDEL
功能说明
删除指定的 HTTP 资源
命令格式
AT+HTTPDEL=<host>,<path>,<conn_type>[,<cert_index>][,<req_header_cnt>,<req_header>...<req_header>]
备注
如果该命令有在参数里面携带请求头,那么这些请求头会和 AT+HTTPHEADER 配置的全局请求头一起添加到 HTTP 报文中。
响应格式
成功响应:
+HTTPDEL: HEADER LEN = <消息头长度>
+HTTPDEL: HEADER DUMP START
<消息头内容>
+HTTPDEL: HEADER DUMP END
+HTTPDEL: BODY DUMP START
<消息体内容>
+HTTPDEL: BODY DUMP END
+HTTPDEL: BODY LEN = <消息体长度>
OK
错误响应:
ERROR:<error_no>
参数
- <host>:
目标主机,输入参数中不需要携带
http://
或者https://
前缀支持域名或 IPv4 地址
最大长度:256 字符
- <path>:
资源路径
默认值:”/”
- <conn_type>:
HTTP 连接类型
1: HTTP
2: HTTPS(不校验证书)
3: HTTPS(用CA证书验证服务器证书)
4: HTTPS(提供客户端证书给服务器验证)
5: HTTPS(双向认证,3和4的合集)
- <cert_index>:
安全证书套件索引,参考 AT 安全证书
[1-10]
仅当 <conn_type> 是 3、4、5 时需要
- <req_header_cnt>:
实际请求头的总数
- <req_header>:
实际的请求头字符串,请求头数量由<req_header_cnt>决定,仅在当前方法中头部携带
错误代码
1: 参数错误
2: 内存分配失败
3: 读取安全证书套件失败
4: 发送HTTP DELETE头失败
5: 读取 HTTP 响应失败
示例
DELETE请求示例:
AT+HTTPDEL=httpbin.org,/delete,2
+HTTPDEL: HEADER LEN = 230
+HTTPDEL: HEADER DUMP START
HTTP/1.1 200 OK
Date: Mon, 06 Jan 2025 07:51:15 GMT
Content-Type: application/json
Content-Length: 263
Connection: keep-alive
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
+HTTPDEL: HEADER DUMP END
+HTTPDEL: BODY DUMP START
{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Host": "httpbin.org",
"X-Amzn-Trace-Id": "Root=1-677b8b73-43851d66543b1a534698c987"
},
"json": null,
"origin": "98.98.48.11",
"url": "https://httpbin.org/delete"
}
+HTTPDEL: BODY DUMP END
+HTTPDEL: BODY LEN = 263
OK