HTTP網絡通訊協議在任何的開發工做中都起到很是重要的做用,今天,咱們來說解下關於HTTP的相關知識。html
計算機網絡體系結構分爲五層,自上而下分別是應用、運輸、網絡、數據鏈路和物理層,以下圖:web
HTTP存在於最高層的應用層,簡單介紹下應用層:瀏覽器
做用
經過應用層協議定義應用進程間(運行的程序)的通訊規則服務器
應用層協議主要有HTTP、SMTP、FTP協議等等網絡
交互的數據單元稱爲報文併發
即HyperText Transfer Protocol,超文本傳輸協議,屬於應用層協議的一種測試
規定了應用進程間通訊(請求&響應)的準則.net
HTTP協議採用了請求/響應的工做方式,工做流程如圖:計算機網絡
HTTP的報文分爲請求報文和響應報文設計
空格不能省
1.1 請求方法
即對請求對象的操做,請求方法有8種:
方法類別 | 意義 |
---|---|
OPTION | 請求「選項」的信息 |
HEAD | 請求讀取」URL標誌信息的首部「信息 |
GET | 請求讀取「URL標誌的信息「的信息 |
POST | 爲服務器添加信息 |
PUT | 爲指定的URL下添加(存儲)一個文檔 |
DELETE | 刪除指定URL所標誌的信息 |
TRACE | 用於進行環回測試的請求報文 |
CONNECT | 用於代理服務器 |
最經常使用的就是GET和POST方法。
1.2 請求路徑
要了解請求地址,先來了解下URL概念:
- 協議:採用的應用層通訊協議,好比在HTTP協議下的URL地址:
HTTP://<主機>:<端口>/<路徑>- 主機:請求資源所在主機的域名
- 端口和路徑有時能夠省略(HTTP默認端口號是80)
從上面能夠了解到,路徑則是端口號後面符號」/「的部分,下面舉例
URL(統一資源定位符) | PATH(路徑) |
---|---|
http://www.baidu.com/ | / |
http://www.weibo.com/2874748/home | /2874748/home |
1.3 協議版本
HTTP協議版本主要是1.0、1.一、2.0
具體區別這裏很少解釋,你們有興趣能夠去了解下
先假設:
2. 常見請求Header
1. 數據交換格式
請求體是能夠是任意類型的,但服務器須要額外進行解析,如JSON
{"skill":{ "web":[ { "name":"html", "year":"5" }, { "name":"ht", "year":"4" }], "database":[ { "name":"h", "year":"2" }] `}}
想詳細瞭解Android開發中的JSON解析能夠看下我寫的另一篇文章:
Android開發:JSON簡介及最全面解析方法!
2.鍵值對形式
鍵與值之間用」=「鏈接,每一個鍵值對間用&鏈接,且只能用ASCII字符,如Query String
key1=value1&key2&value2
3. 分部分形式
請求體被分爲多個部分,應用場景是文件上傳,好比郵件上傳等等
以下:
結合上述說的請求行、請求頭和請求體,現假設
則請求報文以下:
從上面能夠看出,與請求報文相比,除了第一行(請求行VS狀態行)之外,響應報文的其餘結構與請求報文很是類似。其中,響應體是用於存放須要返回給客戶端的數據信息的。
其中,空格不能省
1.1 協議版本
HTTP協議版本主要是1.0、1.一、2.0
具體區別這裏很少解釋,你們有興趣能夠去了解下
1.2 狀態碼
狀態碼分爲5大類:
類別 | 含義 |
---|---|
1xx | 表示信息通知,如請求收到了或正在進行處理 |
2xx | 表示成功,如接受或知道了 |
3xx | 表示重定向,如要完成請求還必須採起進一步行動 |
4xx | 客戶的差錯,如請求中有錯誤的語法或不能完成:404 |
5xx | 表示服務器的差錯,如服務器失效沒法完成請求 |
1.3 狀態信息
對狀態碼的簡單解釋
具體詳細的狀態碼信息能夠看狀態碼詳解
2. 常見響應Header