前言
? 基本上只要做過(guò)Android開發(fā)都離不開網(wǎng)絡(luò)編程伸头,大部分我們跟服務(wù)器做的交互都是通過(guò)Http協(xié)議來(lái)完成的,雖然現(xiàn)在有很多的開源庫(kù)幫我們完成了網(wǎng)絡(luò)請(qǐng)求触创,但是作為一個(gè)有追求的程序員如果只會(huì)使用開源庫(kù)颇蜡,連http協(xié)議都沒(méi)搞清楚产上,這肯定是不行的撑蒜,廢話不多說(shuō)歹啼,直接進(jìn)入正題。
Http報(bào)文構(gòu)成
? http協(xié)議作為互聯(lián)網(wǎng)使用最頻繁的一種網(wǎng)絡(luò)協(xié)議座菠,主要使用在客戶端和服務(wù)器端的通訊狸眼。請(qǐng)求訪問(wèn)文本或者圖像等資源的一端稱為客戶端,提供資源響應(yīng)的一端稱為服務(wù)端浴滴。Http協(xié)議所有傳輸?shù)臄?shù)據(jù)都是以Ascii編碼的文本拓萌,具有可讀。Http傳輸時(shí)只有兩種格式的報(bào)文升略,一般為客戶端發(fā)送的請(qǐng)求報(bào)文司志,服務(wù)端響應(yīng)的響應(yīng)報(bào)文。
請(qǐng)求報(bào)文構(gòu)成: 1. 請(qǐng)求方法 2. 請(qǐng)求URI 3. 協(xié)議版本 4. 可選的請(qǐng)求首部字段(Key:Value)5. 內(nèi)容實(shí)體構(gòu)成降宅。
響應(yīng)報(bào)文構(gòu)成:1. 協(xié)議版本 2. 狀態(tài)碼(200-500) 3.用于解釋狀態(tài)碼的原因短語(yǔ),4.可選的響應(yīng)首部字段 5. 內(nèi)容實(shí)體構(gòu)成囚霸。
Http請(qǐng)求方法
Get: 獲取資源
用來(lái)請(qǐng)求訪問(wèn)已被URI識(shí)別的資源腰根。指定的資源經(jīng)過(guò)服務(wù)器解析后返回響應(yīng)內(nèi)容。
Post: 傳輸主體數(shù)據(jù)
雖然GET方法也可以傳輸實(shí)體的主題拓型,但是我們一般使用Post方法额嘿,Post的主要木釘并不是要獲取響應(yīng)的主體內(nèi)容。
HEAD:獲取報(bào)文首部
Head方法和get方法一樣劣挫,只是不返回報(bào)文主體部分册养。用于確認(rèn)URI的有效性以及資源更想的日期時(shí)間。
PUT DELETE方法: 新增文件 刪除文件
用的比較少压固,因?yàn)閔ttp協(xié)議這兩個(gè)方法不帶有驗(yàn)證機(jī)制球拦,所有WEB用的很少。
OPTIONS:詢問(wèn)支持的方法
用來(lái)查詢針對(duì)請(qǐng)求URI指定的資源支持的方法(Http方法)帐我。
TRACE:追蹤路徑
用于讓W(xué)EB服務(wù)器將之前的請(qǐng)求通信環(huán)回給客戶端的方法坎炼。發(fā)送請(qǐng)求時(shí),在Max-forward首部字段填入數(shù)值拦键,每經(jīng)過(guò)一個(gè)服務(wù)器就將該數(shù)字減1谣光,當(dāng)數(shù)值剛好減到0,就停止傳輸芬为,最后接受到的服務(wù)器端則返回狀態(tài)200 OK的響應(yīng)萄金。
CONNECT: 要求用隧道協(xié)議連接代理
要求在與代理服務(wù)器通信時(shí)建立隧道蟀悦,實(shí)現(xiàn)隧道協(xié)議進(jìn)行TCP通信。主要使用SSL和TLS協(xié)議傳輸氧敢。一般也用的比較少日戈。
響應(yīng)報(bào)文的狀態(tài)碼
100-199:信息狀態(tài)碼 接受的請(qǐng)求正在處理
200-299:成功狀態(tài)碼 請(qǐng)求正常處理完畢
300-399:重定向狀態(tài)碼 需要額外的操作完成請(qǐng)求
400-499:客戶端錯(cuò)誤碼 服務(wù)器無(wú)法處理請(qǐng)求
500- :服務(wù)器錯(cuò)誤碼 服務(wù)器處理請(qǐng)求失敗