HTTP AT 命令集¶
AT+HTTPCLIENT:发送 HTTP 客户端请求
AT+HTTPGETSIZE:获取 HTTP 资源大小
AT+HTTPCGET:获取 HTTP 资源
AT+HTTPCPOST:Post 指定长度的 HTTP 数据
AT+HTTPURLCFG:设置/获取长的 HTTP URL
AT+HTTPCLIENT:发送 HTTP 客户端请求¶
设置命令¶
命令:
AT+HTTPCLIENT=<opt>,<content-type>,<"url">,[<"host">],[<"path">],<transport_type>[,<"data">][,<"http_req_header">][,<"http_req_header">][...]
响应:
+HTTPCLIENT:<size>,<data>
OK
参数¶
<opt>:HTTP 客户端请求方法:
1:HEAD
2:GET
3:POST
4:PUT
5:DELETE
<content-type>:客户端请求数据类型:
0:
application/x-www-form-urlencoded
1:
application/json
2:
multipart/form-data
3:
text/xml
<”url”>:HTTP URL,当后面的
<host>
和<path>
参数为空时,本参数会自动覆盖这两个参数。<”host”>:域名或 IP 地址。
<”path”>:HTTP 路径。
<transport_type>:HTTP 客户端传输类型,默认值为 1:
1:
HTTP_TRANSPORT_OVER_TCP
2:
HTTP_TRANSPORT_OVER_SSL
<”data”>:当
<opt>
是 POST 请求时,本参数为发送给 HTTP 服务器的数据。当<opt>
不是 POST 请求时,这个参数不存在(也就是,不需要输入逗号来表示有这个参数)。<”http_req_header”>:可发送多个请求头给服务器。
说明¶
如果包含 URL 的整条命令的长度超过了 256 字节,请先使用 AT+HTTPURLCFG 命令预配置 URL,然后本命令里的 <”url”> 参数需要设置为
""
。如果
url
参数不为空,HTTP 客户端将使用它并忽略host
参数和path
参数;如果url
参数被省略或字符串为空,HTTP 客户端将使用host
参数和path
参数。某些已发布的固件默认不支持 HTTP 客户端命令(详情请见 ESP-AT 固件差异),但是可通过以下方式使其支持该命令:
./build.py menuconfig
>Component config
>AT
>AT http command support
,然后编译项目(详情请见 编译 ESP-AT 工程)。
示例¶
// HEAD 请求
AT+HTTPCLIENT=1,0,"http://httpbin.org/get","httpbin.org","/get",1
// GET 请求
AT+HTTPCLIENT=2,0,"http://httpbin.org/get","httpbin.org","/get",1
// POST 请求
AT+HTTPCLIENT=3,0,"http://httpbin.org/post","httpbin.org","/post",1,"field1=value1&field2=value2"
AT+HTTPGETSIZE:获取 HTTP 资源大小¶
设置命令¶
命令:
AT+HTTPGETSIZE=<"url">
响应:
+HTTPGETSIZE:<size>
OK
参数¶
<”url”>:HTTP URL。
<size>:HTTP 资源大小。
说明¶
如果包含 URL 的整条命令的长度超过了 256 字节,请先使用 AT+HTTPURLCFG 命令预配置 URL,然后本命令里的 <”url”> 参数需要设置为
""
。某些已发布的固件默认不支持 HTTP 客户端命令(详情请见 ESP-AT 固件差异),但是可通过以下方式使其支持该命令:
./build.py menuconfig
>Component config
>AT
>AT http command support
,然后编译项目(详情请见 编译 ESP-AT 工程)。
示例¶
AT+HTTPGETSIZE="http://www.baidu.com/img/bdlogo.gif"
AT+HTTPCGET:获取 HTTP 资源¶
设置命令¶
命令:
AT+HTTPCGET=<"url">[,<tx size>][,<rx size>][,<timeout>]
响应:
+HTTPCGET:<size>,<data>
OK
参数¶
<”url”>:HTTP URL。
<tx size>:HTTP 发送缓存大小。单位:字节。默认值:2048。范围:[0,10240]。
<rx size>:HTTP 接收缓存大小。单位:字节。默认值:2048。范围:[0,10240]。
<timeout>:网络超时。单位:毫秒。默认值:5000。范围:[0,180000]。
说明¶
如果包含 URL 的整条命令的长度超过了 256 字节,请先使用 AT+HTTPURLCFG 命令预配置 URL,然后本命令里的 <”url”> 参数需要设置为
""
。
AT+HTTPCPOST:Post 指定长度的 HTTP 数据¶
设置命令¶
命令:
AT+HTTPCPOST=<"url">,<length>[,<http_req_header_cnt>][,<http_req_header>..<http_req_header>]
响应:
OK
>
符号 >
表示 AT 准备好接收串口数据,此时您可以输入数据,当数据长度达到参数 <length>
的值时,传输开始。
若传输成功,则返回:
SEND OK
若传输失败,则返回:
SEND FAIL
参数¶
<”url”>:HTTP URL。
<length>:需 POST 的 HTTP 数据长度。最大长度等于系统可分配的堆空间大小。
<http_req_header_cnt>:
<http_req_header>
参数的数量。[<http_req_header>]:可发送多个请求头给服务器。
说明¶
如果包含 URL 的整条命令的长度超过了 256 字节,请先使用 AT+HTTPURLCFG 命令预配置 URL,然后本命令里的 <”url”> 参数需要设置为
""
。
AT+HTTPURLCFG:设置/获取长的 HTTP URL¶
查询命令¶
命令:
AT+HTTPURLCFG?
响应:
[+HTTPURLCFG:<url length>,<data>]
OK
设置命令¶
命令:
AT+HTTPURLCFG=<url length>
响应:
OK
>
符号 > 表示 AT 准备好接收串口数据,此时您可以输入 URL,当数据长度达到参数 <url length>
的值时,系统返回:
SET OK
参数¶
<url length>:HTTP URL 长度。单位:字节。
0:清除 HTTP URL 配置。
[8,8192]:设置 HTTP URL 配置。
<data>: HTTP URL 数据。
HTTP AT 错误码¶
HTTP 客户端:
HTTP 客户端错误码
说明
0x7000
建立连接失败
0x7190
Bad Request
0x7191
Unauthorized
0x7192
Payment Required
0x7193
Forbidden
0x7194
Not Found
0x7195
Method Not Allowed
0x7196
Not Acceptable
0x7197
Proxy Authentication Required
0x7198
Request Timeout
0x7199
Conflict
0x719a
Gone
0x719b
Length Required
0x719c
Precondition Failed
0x719d
Request Entity Too Large
0x719e
Request-URI Too Long
0x719f
Unsupported Media Type
0x71a0
Requested Range Not Satisfiable
0x71a1
Expectation Failed
HTTP 服务器:
HTTP 服务器错误码
说明
0x71f4
Internal Server Error
0x71f5
Not Implemented
0x71f6
Bad Gateway
0x71f7
Service Unavailable
0x71f8
Gateway Timeout
0x71f9
HTTP Version Not Supported
HTTP AT:
AT+HTTPCLIENT
命令的错误码为0x7000+Standard HTTP Error Code
(更多有关 Standard HTTP/1.1 Error Code 的信息,请参考 RFC 2616)。例如,若 AT 在调用
AT+HTTPCLIENT
命令时收到 HTTP error 404,则会返回0x7194
错误码 (hex(0x7000+404)=0x7194
)。