簡介
esp-at
實現了一些常用的 AT
指令集, 該指令集可用於 MCU
/PC
/雲等與 ESP
設備的交互. 目前 esp-at
已經開始支持部分 HTTP
客戶端的功能, 包括 HEAD
, GET
, POST
, PUT
, DELETE
等請求方式. 本文基於 ESP-AT
環境來介紹這幾種請求方式的用法.
準備
-
AT
環境搭建, 可參考 https://blog.csdn.net/espressif/article/details/81608992 -
開啓
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 返回: