当前位置:   article > 正文

HTTP AT 命令集_at+httpclient

at+httpclient

  1. 介绍

默认的 AT 固件支持此页面下的所有 AT 命令。如果您不需要 ESP32 支持 HTTP 命令,请自行 编译 ESP-AT 工程,在第五步配置工程里选择:

发送 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 工程)。

  • 该指令不支持 URL 重定向,在获取到服务器返回的状态码 301(永久性重定向)或者 302(临时性重定向)后不会自动跳转到新的 URL 地址。您可以使用某些工具获取要访问的实际 URL,然后通过该命令访问它。

  • 如果包含 <"data"> 参数的整条命令的长度超过了 256 字节,请使用 AT+HTTPCPOST 命令。

  • 要设置更多的 HTTP 请求头,请使用 AT+HTTPCHEAD 命令。

示例

  1. // HEAD 请求
  2. AT+HTTPCLIENT=1,0,"http://httpbin.org/get","httpbin.org","/get",1
  3. // GET 请求
  4. AT+HTTPCLIENT=2,0,"http://httpbin.org/get","httpbin.org","/get",1
  5. // POST 请求
  6. AT+HTTPCLIENT=3,0,"http://httpbin.org/post","httpbin.org","/post",1,"field1=value1&field2=value2"

AT+HTTPGETSIZE:获取 HTTP 资源大小

设置命令

命令:

AT+HTTPGETSIZE=<"url">[,<tx size>][,<rx size>][,<timeout>]

响应:

+HTTPGETSIZE:<size>

OK

参数

  • <”url”>:HTTP URL。

  • <tx size>:HTTP 发送缓存大小。单位:字节。默认值:2048。范围:[0,10240]。

  • <rx size>:HTTP 接收缓存大小。单位:字节。默认值:2048。范围:[0,10240]。

  • <timeout>:网络超时。单位:毫秒。默认值:5000。范围:[0,180000]。

  • <size>:HTTP 资源大小。

说明

  • 如果包含 URL 的整条命令的长度超过了 256 字节,请先使用 AT+HTTPURLCFG 命令预配置 URL,然后本命令里的 <"url"> 参数需要设置为 ""

  • 如果您想设置 HTTP 请求头,请使用 AT+HTTPCHEAD 命令设置。

示例

AT+HTTPGETSIZE="http://www.baidu.com/img/haibo.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"> 参数需要设置为 ""

  • 如果您想设置 HTTP 请求头,请使用 AT+HTTPCHEAD 命令设置。

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>]:HTTP 请求头。可发送多个请求头给服务器。

说明

  • 如果包含 URL 的整条命令的长度超过了 256 字节,请先使用 AT+HTTPURLCFG 命令预配置 URL,然后本命令里的 <"url"> 参数需要设置为 ""

  • 该命令的 content-type 默认类型为 application/x-www-form-urlencoded

  • 如果您想设置 HTTP 请求头,请使用 AT+HTTPCHEAD 命令设置。

AT+HTTPCP UT:Put 指定长度的 HTTP 数据

设置命令

命令:

AT+HTTPCPUT=<"url">,<length>[,<http_req_header_cnt>][,<http_req_header>..<http_req_header>]

响应:

OK

>

符号 > 表示 AT 准备好接收串口数据,此时您可以输入数据,当数据长度达到参数 <length> 的值时,传输开始。

若传输成功,则返回:

SEND OK

若传输失败,则返回:

SEND FAIL

参数

  • <”url”>:HTTP URL。

  • <length>:需 Put 的 HTTP 数据长度。最大长度等于系统可分配的堆空间大小。

  • <http_req_header_cnt><http_req_header> 参数的数量。

  • [<http_req_header>]:HTTP 请求头。可发送多个请求头给服务器。

说明

  • 如果包含 URL 的整条命令的长度超过了 256 字节,请先使用 AT+HTTPURLCFG 命令预配置 URL,然后本命令里的 <"url"> 参数需要设置为 ""

  • 如果您想设置 HTTP 请求头,请使用 AT+HTTPCHEAD 命令设置。

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 数据。

AT+HTTPCHEAD:设置/查询 HTTP 请求头

查询命令

命令:

AT+HTTPCHEAD?

响应:

+HTTPCHEAD:<index>,<"req_header">

OK

设置命令

命令:

AT+HTTPCHEAD=<req_header_len>

响应:

OK

>

符号 > 表示 AT 准备好接收 AT 命令口数据,此时您可以输入 HTTP 请求头(请求头为 key: value 形式),当数据长度达到参数 <req_header_len> 的值时,AT 返回:

OK

参数

  • <index>:HTTP 请求头的索引值。

  • <”req_header”>:HTTP 请求头。

  • <req_header_len>:HTTP 请求头长度。单位:字节。

    • 0:清除所有已设置的 HTTP 请求头。

    • 其他值:设置一个新的 HTTP 请求头。

说明

  • 本命令一次只能设置一个 HTTP 请求头,但可以多次设置,支持多个不同的 HTTP 请求头。

  • 本命令配置的 HTTP 请求头是全局性的,一旦设置,所有 HTTP 的命令都会携带这些请求头。

  • 本命令设置的 HTTP 请求头中的 key 如果和其它 HTTP 命令的请求头中的 key 相同,则会使用本命令中设置的 HTTP 请求头。

示例

// 设置请求头
AT+HTTPCHEAD=18

// 在收到 ">" 符号后,输入以下的 Range 请求头,下载资源的前 256 个字节。
Range: bytes=0-255

// 下载 HTTP 资源
AT+HTTPCGET="https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/index.html"
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号