AT
工程:https://github.com/espressif/esp-at
AT
文档:https://docs.espressif.com/projects/esp-at/zh_CN/latest/
简介
esp-at
实现了一些常用的 AT
指令集, 该指令集可用于 MCU
/PC
/云等与 ESP
设备的交互. 目前 esp-at
已经开始支持部分 HTTP
客户端的功能, 包括 HEAD
, GET
, POST
, PUT
, DELETE
等请求方式. 本文基于 ESP-AT
环境来介绍这几种请求方式的用法.
准备
-
开启
AT+HTTPCLIENT
功能make menuconfig
—>Component config
—>AT
—>AT http command support
选中即可, 如下图所示.
AT+HTTPCLIENT
命令简介
命令格式:
AT+HTTPCLIENT=<opt>,<content-type>,[<url>],[<host>],[<path>],<transport_type>,[<data>]
参数:
<opt>
: 请求方法- 1:
HEAD
请求方法 - 2:
GET
请求方法 - 3:
POST
请求方法 - 4:
PUT
请求方法 - 5:
DELETE
请求方法
- 1:
<content-type>
: 请求数据类型- 0:
"application/x-www-form-urlencoded"
- 1:
"application/json"
- 2:
"multipart/form-data"
- 3:
"text/xml"
- 0:
[<url>]
:HTTP URL
, 可选字段[<host>]
: 域名或是IP
地址, 可选字段[<path>]
:HTTP Path
, 可选字段<transport_type>
:HTTP Client transport
0
:HTTP_TRANSPORT_UNKNOWN
, 默认值.1
:HTTP_TRANSPORT_OVER_TCP
2
:HTTP_TRANSPORT_OVER_SSL
[<data>]
: 可选字段, 当POST
请求时, 为上传的用户数据
Note:
如果<url>
字段没有设置,<host>
和<path>
参数必须设置.
一. HEAD 请求头部数据
在这小节, 介绍 HEAD
请求服务端的头部数据,服务器端以 http://httpbin.org 来做测试, 返回的结果以头字段的形式呈现.
AT 命令:
AT+HTTPCLIENT=1,0,"http://httpbin.org/get",,,0
AT 返回:
二. GET 请求下载文件
这里以下载歌曲为例, 演示 GET
请求下载文件.
演示文件为网易云音乐, 网页链接为 https://music.163.com/#/song?id=1341860760, 文件链接为 http://music.163.com/song/media/outer/url?id=1341860760.mp3
AT 命令如下:
// 恢复出厂设置
AT+RESTORE
// 设置 AT 为 station 模式
AT+CWMODE=1
// 连接到路由器,mercury_song 为测试路由器的 ssid, 12345678 测试路由器的 password. 具体设置由所连路由器决定
AT+CWJAP="mercury_song","12345678"
// 通过 GET 请求下载 MP3 音乐
AT+HTTPCLIENT=2,0,"http://music.163.com/song/media/outer/url?id=1341860760.mp3",,,1
AT 返回:
三. POST 请求更改服务器资源
该部分介绍 POST
请求更改服务器资源, 服务器端以 http://httpbin.org 来做测试.
参考 AT 命令如下:
AT+HTTPCLIENT=3,0,"http://httpbin.org/post","httpbin.org","/post",1,"field1=value1&field2=value2"
AT 返回:
四. PUT 请求
PUT
方法和 POST
请求相类似, PUT
请求的参数形式支持 Query String Parameters 方式. 服务器端以 http://httpbin.org 来做测试.
参考 AT 命令:
AT+HTTPCLIENT=4,0,"http://httpbin.org/put?user=foo",,,1
AT 返回:
五. DELETE 请求
DELETE
方法被用来删除服务器的资源, 该请求方式的确切用法取决于服务器的实现. 服务器端以 https://postman-echo.com/delete 来做测试.
参考 AT 命令:
AT+HTTPCLIENT=5,0,"https://postman-echo.com/delete",,,0
AT 返回: