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请求头。用于设置GET/POST/PUT等方法使用的HTTP请求头。

设置后,对后续的所有HTTP相关命令生效,直到重新配置,重启或参数用0进行重置。

备注

该命令仅支持在 主控控制模式 下使用。

命令格式

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-5时需要

  • <req_header_cnt>:

    • 请求头的总数

  • <req_header>:

    • 实际的请求头,可发送多个

错误代码

  • 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-5时需要

  • <body_size>:要POST的HTTP数据长度

    • 长度无限制

  • <req_header_cnt>:

    • 请求头的总数

  • <req_header_cnt>:

    • 请求头的总数

  • <req_header>:

    • 实际的请求头,可发送多个

错误代码

  • 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&param2=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&param2=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报文中。

响应格式

成功响应:

>>>
<Post消息内容>
+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-5时需要

  • <body_size>:要POST的HTTP数据长度

    • 长度无限制

  • <req_header_cnt>:

    • 请求头的总数

  • <req_header_cnt>:

    • 请求头的总数

  • <req_header>:

    • 实际的请求头,可发送多个

错误代码

  • 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&param2=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&param2=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-5时需要

  • <req_header_cnt>:

    • 请求头的总数

  • <req_header>:

    • 实际的请求头,可发送多个

错误代码

  • 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