HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議),TCP/IP協(xié)議的一個(gè)應(yīng)用層協(xié)議,用于定義Web瀏覽器與Web服務(wù)器之間交換數(shù)據(jù)的過程。客戶端連上Web服務(wù)器后,若想獲得Web服務(wù)器中的某個(gè)Web資源,需遵守一定的通訊格式,而HTTP協(xié)議就是用于定義客戶端與Web服務(wù)器通迅的格式。
HTTP 1.0與HTTP 1.1的區(qū)別
1、在HTTP 1.0中,客戶端的每次請(qǐng)求都要求建立一次單獨(dú)的連接,在處理完本次請(qǐng)求后,就自動(dòng)釋放連接。
2、在HTTP 1.1中則可以在一次連接中處理多個(gè)請(qǐng)求,并且多個(gè)請(qǐng)求可以重疊進(jìn)行,不需要等待一個(gè)請(qǐng)求結(jié)束后再發(fā)送下一個(gè)請(qǐng)求。
HTTP請(qǐng)求包

POST /meme.php/home/user/login HTTP/1.1
Host: 114.215.86.90
Cache-Control: no-cache
Postman-Token: bd243d6b-da03-902f-0a2c-8e9377f6f6ed
Content-Type: application/x-www-form-urlencoded
tel=13637829200&password=123456
HTTP/1.1定義的請(qǐng)求方法有8種:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE,最常的兩種GET和POST。如果是RESTful接口的話一般會(huì)用到GET、POST、DELETE、PUT。
HTTP響應(yīng)包

HTTP/1.1 200 OK
Date: Sat, 02 Jan 2016 13:20:55 GMT
Server: Apache/2.4.6 (CentOS) PHP/5.6.14
X-Powered-By: PHP/5.6.14
Content-Length: 78
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
{"status":202,"info":"\u6b64\u7528\u6237\u4e0d\u5b58\u5728\uff01","data":null}
HTTP協(xié)議的特點(diǎn)
1、支持客戶/服務(wù)器模式。
2、簡(jiǎn)單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、 HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。 由于HTTP協(xié)議簡(jiǎn)單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。
3、靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。
4、無連接:無連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。服務(wù)器處理完客戶的請(qǐng)求, 并且客戶端收到應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時(shí)間。
5、無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒有記憶能力。 缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。
參考
你應(yīng)該知道的HTTP基礎(chǔ)知識(shí)
Android網(wǎng)絡(luò)請(qǐng)求心路歷程