HttpClient——ESP8266HTTPClient庫


 針對Http請求操作的庫,ESP8266HTTPClient庫不屬於ESP8266WiFi庫的一部分,所以需要引入  #include <ESP8266HTTPClient.h>

HTTP是一個應用層協議,由請求和響應構成,是一個標准的客戶端服務器模型。HTTP默認的端口號是80,HTTPS的端口號是443  

HTTP特點

簡單快速:客戶端向服務端請求服務時,只需要傳送請求方法和路徑。HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度快

靈活:HTTP允許傳輸任意類型的數據對象,正在傳輸的類型由Content-Type加以標記

HTTP0.9和1.0使用非持續連接:限制每次連接都只處理一個請求,服務端處理完客戶的請求,並收到客戶的應答后,即斷開連接

HTTP1.1使用持續連接:不必為每個web對象創建一個新連接,一個連接可以傳送多個對象,節省傳輸時間

無狀態:HTTP協議是無狀態。對於事務處理沒有記憶能力,如果需要處理前面信息,則必須重傳,這樣可能導致每次連接傳送的數據量增大

HTTP工作流程

工作流程可分為4步:

首先客戶端 client與服務端 server建立連接

建立連接后,客戶端發送一個請求給服務端,請求方法的格式:統一資源標識符(URL)、HTTP協議版本號、請求頭、請求內容等

服務端接收到請求后,給予相應的響應信息,其格式為:狀態行(包括協議版本、成功或者失敗代碼)、服務器信息、實體信息等

客戶端接收到服務端返回的信息,通過瀏覽器顯示在用戶的顯示屏上,然后客戶端與服務端斷開連接

以上四步驟,只要其中一步出現錯誤,那么就會產生錯誤信息返回給客戶端

 

HTTP請求

客戶端發送一個HTTP請求到服務器,請求信息包括以下格式:

  • 請求行(request line)
  • 請求頭部(header)
  • 空行 (empty line)
  • 請求數據 (request body)

 

 

Get請求

GET /562f25980001b1b106000338.jpg HTTP/1.1
Host    img.mukewang.com
User-Agent    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept    image/webp,image/*,*/*;q=0.8
Referer    http://www.imooc.com/
Accept-Encoding    gzip, deflate, sdch
Accept-Language    zh-CN,zh;q=0.8

 

1.第一部分:請求行,用來說明請求類型,要訪問的資源以及所使用的HTTP版本

GET說明請求類型為GET,    [/562f25980001b1b106000338.jpg]為要訪問的資源,   該行的最后一部分說明使用的是HTTP1.1版本

2.第二部分:請求頭部,緊接着請求行(即第一行)之后的部分,用來說明服務器要使用的附加信息:

從第二行起為請求頭部,HOST將指出請求的目的地

User-Agent,服務器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎

該信息由你的瀏覽器來定義,並且在每個請求中自動發送等等

3.第三部分:空行,請求頭部后面的空行是必須的:

即使第四部分的請求數據為空,也必須有空行

4.第四部分:請求數據也叫主體,可以添加任意的其他數據

這個例子的請求數據為空

 

POST請求

1 POST / HTTP1.1
2 Host:www.wrox.com
3 User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
4 Content-Type:application/x-www-form-urlencoded
5 Content-Length:40
6 Connection: Keep-Alive
7  
8 name=Professional%20Ajax&publisher=Wiley

 

  1. 第一部分:請求行,第一行明了是post請求,以及http1.1版本。
  2. 第二部分:請求頭部,第二行至第六行。
  3. 第三部分:空行,第七行的空行。
  4. 第四部分:請求數據,第八行

 

 

HTTP Response響應信息

一般情況下,服務端接收並處理客戶端發過來的請求會返回一個HTTP的響應信息。HTTP響應也由四個部分組成,分別是:

  • 狀態行
  • 消息報頭
  • 空行
  • 響應正文

第一部分:狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分組成

第一行為狀態行,(HTTP/1.1)表明HTTP版本為1.1版本,狀態碼為200,狀態消息為(ok)

 

 

 

HTTP狀態碼

狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:

  • 1xx:指示信息–表示請求已接收,繼續處理
  • 2xx:成功–表示請求已被成功接收、理解、接受
  • 3xx:重定向–要完成請求必須進行更進一步的操作
  • 4xx:客戶端錯誤–請求有語法錯誤或請求無法實現
  • 5xx:服務器端錯誤–服務器未能實現合法的請求

 

 

常見狀態碼:

200 OK //客戶端請求成功
400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解
401 Unauthorized //請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden //服務器收到請求,但是拒絕提供服務
404 Not Found //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error //服務器發生不可預期的錯誤
503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間后可能恢復正常

 

 

1.http請求方法

1.1 begin —— 封裝請求Url

bool begin(String url);
 
bool begin(String host, uint16_t port, String uri = "/");
//host String(192.168.1.12,不需要帶上http://前綴)

注意點:url可以有以下幾種形態:

1. http://192.168.1.12/test.html
2. http://user:password@192.168.1.12/test.html
3. http://user:password@192.168.1.12:8888/test.html

對於1,沒有Authorization(跟用戶校驗有關,會轉成base64編碼),也沒有重新設置端口(默認端口80);
對於2,有Authorization(user:password,跟用戶校驗有關,會轉成base64編碼),但沒有重新設置端口;
對於3,有Authorization也有重新設置端口號為8888;

 

 

資料  https://blog.csdn.net/dpjcn1990/article/details/92830108 

 

 

 

 

 

天子驕龍

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM