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

响应格式

成功响应:

>>>
<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&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、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