1.HTTP的簡(jiǎn)介
HTTP 的定義
一種網(wǎng)絡(luò)傳輸協(xié)議,位于TCP/IP 協(xié)議族的應(yīng)用層。
超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol),和HTML(Hypertext Markup Language),HTTP是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所用的www文件必須準(zhǔn)守這個(gè)標(biāo)準(zhǔn)。
超文本,既(擴(kuò)展性文本),指的是HTML中可以有鏈向別的文本的鏈接。

2.HTTP的工作方式
瀏覽器:
用戶(hù)在瀏覽器輸入地址點(diǎn)擊回車(chē)->瀏覽器拼裝HTTP報(bào)文并發(fā)送請(qǐng)求給服務(wù)器->服務(wù)器處理請(qǐng)求后發(fā)送響應(yīng)報(bào)文給瀏覽器->瀏覽器解析報(bào)文并且顯示到界面
APP:
用戶(hù)打開(kāi)APP->Android端調(diào)用請(qǐng)求拼接報(bào)文并且發(fā)送給服務(wù)器->服務(wù)器處理請(qǐng)求后響應(yīng)報(bào)文給手機(jī)->Android處理響應(yīng)報(bào)文并且處理數(shù)據(jù)展示頁(yè)面
3.URL 和 HTTP報(bào)文
URL 格式
協(xié)議類(lèi)型://服務(wù)器地址[:端口號(hào)]路徑
請(qǐng)求報(bào)文格式

響應(yīng)報(bào)文格式

Request Method 請(qǐng)求方法
GET
1.用于獲取服務(wù)器資源
2.對(duì)于不對(duì)服務(wù)器資源進(jìn)行修改的請(qǐng)求
3.get請(qǐng)求沒(méi)有請(qǐng)求體
GET /users/1 HTTP/1.1
Host: www.baidu.com
POST
1.用于修改或者增加資源
2.發(fā)送給服務(wù)器的內(nèi)容放置在body中
POST /users HTTP/1.1
Host: www.baidu.com Content-Type: application/x-www-form-urlencoded
Content-Length: 13
name=rengwuxian&gender=male
PUT
1.用于修改資源
2.發(fā)送給服務(wù)器的內(nèi)容放置在body中
PUT /users/1 HTTP/1.1
Host: www.baidu.com Content-Type: application/x-www-form-urlencoded
Content-Length: 13
gender=female
Delete
1.用于刪除資源
2.不發(fā)送body
DELETE /users/1 HTTP/1.1
Host: www.baidu.com
Head
1.和GET使用方法完全相同
2.和GET唯一區(qū)別在于,返回的響應(yīng)中沒(méi)有Body
Status Code 狀態(tài)碼
狀態(tài)嗎是三位數(shù)字,用于對(duì)響應(yīng)結(jié)果做出類(lèi)型化描述
- 1xx:臨時(shí)性消息。如:100(繼續(xù)發(fā)送)、101(正在切換協(xié)議)
- 2xx:成功。如:200(響應(yīng)成功)、201(創(chuàng)建成功)
- 3xx:重定向。如:301(永久移動(dòng))、302(暫時(shí)移動(dòng))、304(內(nèi)容未改變)
- 4xx:客戶(hù)端錯(cuò)誤。如:400(客戶(hù)端請(qǐng)求錯(cuò)誤)、401(認(rèn)證失敗)、403(被禁止)、404(找不到內(nèi)容)
- 5xx:服務(wù)器錯(cuò)誤。如500(服務(wù)器內(nèi)部錯(cuò)誤)
Header 首部
作用:HTTP消息的metadata。
Host
目標(biāo)主機(jī)。是在目標(biāo)服務(wù)器上用于定位子服務(wù)器
Content-Type
指定Body的類(lèi)型。主要有四類(lèi):
1.text/html :請(qǐng)求Web頁(yè)面是返回響應(yīng)的類(lèi)型,Body中返回html文本
2.x-www-form-urlencoded :Web 頁(yè)面純文本表單的提交方式
3.multitype/form-data:Web頁(yè)面含有二進(jìn)制文件時(shí)的提交方式
4.application/json,image/jpeg,application/zip ……
單項(xiàng)內(nèi)容(文本或非文本都可以),用于Web api的響應(yīng)或者POST/PUT的請(qǐng)求
Content-Length
指定Body的長(zhǎng)度(字節(jié))
Trans:chunked(分塊傳輸編碼Chunked Transfer Encoding)
用于當(dāng)響應(yīng)發(fā)起時(shí),內(nèi)容長(zhǎng)度還沒(méi)能確定的情況下。和Content-Length不同時(shí)使用。用途是盡早給出響應(yīng),減少用戶(hù)等待。
格式:
HTTP/1.1 200 OK
Content-Type: text/html
Transfer-Encoding: chunked
4
Chun
9
ked Trans
12
fer Encoding
0
Location
指定重定向的目標(biāo)URL
User-Agent
用戶(hù)代理,既是誰(shuí)實(shí)際發(fā)送請(qǐng)求、接受響應(yīng)的,例如手機(jī)瀏覽器等
Range/Accept-Range
按范圍獲取數(shù)據(jù)
按范圍取數(shù)據(jù)
Accept-Range: bytes 響應(yīng)報(bào)?文中出現(xiàn),表示服務(wù)器??支持按字節(jié)來(lái)取范圍數(shù)據(jù) Range: bytes=<start>-<end> 請(qǐng)求報(bào)?文中出現(xiàn),表示要取哪段數(shù)據(jù) Content-Range:<start>-<end>/total 響應(yīng)報(bào)?文中出現(xiàn),表示發(fā)送的是哪段數(shù)據(jù)
作?用:斷點(diǎn)續(xù)傳、多線程下載。
其他Headers
Accept: 客戶(hù)端能接受的數(shù)據(jù)類(lèi)型。如 text/html
Accept-Charset: 客戶(hù)端接受的字符集。如 utf-8
Accept-Encoding: 客戶(hù)端接受的壓縮編碼類(lèi)型。如 gzip
Content-Encoding:壓縮類(lèi)型。如 gzip
Cache
在客戶(hù)端或者中間網(wǎng)絡(luò)節(jié)點(diǎn)緩存數(shù)據(jù),降低從服務(wù)器獲取數(shù)據(jù)的頻率,用來(lái)提高網(wǎng)絡(luò)性能