99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Android Android網(wǎng)絡(luò)編程要學(xué)的東西與Http協(xié)議學(xué)習(xí)

2023-03-31 13:47 更新

本節(jié)引言:

不知不覺終于來到Android網(wǎng)絡(luò)編程這一章節(jié),前面我們玩的都是單機(jī),肯定是不過癮是吧, 本節(jié)開始我們來學(xué)習(xí)Android網(wǎng)絡(luò)編程相關(guān)的一些東西:Android端網(wǎng)絡(luò)編程要干嘛?Http協(xié)議 的學(xué)習(xí),使用自帶扣腳Json解析類解析Json,XML解析的幾種常用方式,HttpUrlConnection和 HttpClient的使用,文件的上傳,下載;WebService的使用,WebView,Socket通信的使用等!

另外我們是客戶端,服務(wù)端的內(nèi)容不在我們的范疇,而且小豬也不擅長,我們的最低要求是: 能夠掌握獲取與解析服務(wù)器反饋的數(shù)據(jù)的能力! 好的,話不多說,開始本節(jié)內(nèi)容!


1.Android與互聯(lián)網(wǎng)交互的三種方式


2.初識(shí)Http協(xié)議

實(shí)際開發(fā)中我們和服務(wù)端打交道一般用得都是基于Http協(xié)議的通信,所以學(xué)好Http協(xié)議是非常 重要的,當(dāng)然,我們不用過于考究一些細(xì)節(jié)的東西,有個(gè)大體的了解即可!都是一些概念性的東西!


1)什么是Http協(xié)議?

答:hypertext transfer protocol(超文本傳輸協(xié)議),TCP/IP協(xié)議的一個(gè)應(yīng)用層協(xié)議,用于 定義WEB瀏覽器與WEB服務(wù)器之間交換數(shù)據(jù)的過程??蛻舳诉B上web服務(wù)器后,若想獲得web服務(wù)器 中的某個(gè)web資源,需遵守一定的通訊格式,HTTP協(xié)議用于定義客戶端與web服務(wù)器通迅的格式。

2)Http 1.0 與 Http 1.1的區(qū)別

答:1.0協(xié)議,客戶端與web服務(wù)器建立連接后,只能獲得一個(gè)web資源! 而1.1協(xié)議,允許客戶端與web服務(wù)器建立連接后,在一個(gè)連接上獲取多個(gè)web資源!

3)Http協(xié)議的底層工作流程:

答:我們先要知道兩個(gè)名詞:

  • SYN(synchronous):TCP/IP建立連接時(shí)使用的握手信號(hào)
  • ACK(Acknowledgement):確認(rèn)字符,確認(rèn)發(fā)來的數(shù)據(jù)已經(jīng)接受無誤

接著就到TCP/IP三次握手的概念:

  • 客戶端發(fā)送syn包(syn = j)到服務(wù)器,進(jìn)入SYN_SEND狀態(tài),然后等待服務(wù)器確認(rèn)
  • 服務(wù)器收到syn包,確認(rèn)客戶的syn(ack = j + 1),同時(shí)在自己也發(fā)送一個(gè)SYN包(syn=k), 即SYN + ACK包,服務(wù)器進(jìn)入SYN_RECV狀態(tài)
  • 客戶端收到SYN + ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack = k +1),發(fā)送完畢后,客戶端與服務(wù)端 進(jìn)入ESTABLISHED狀態(tài),完成三次握手,然后兩者開始傳送數(shù)據(jù)

如果還不是很清晰,我們?cè)賮砜慈挝帐值氖疽鈭D:

了解了是吧,然后我們就來看看Http操作的一個(gè)流程了:

  • 用戶點(diǎn)擊瀏覽器上的url(超鏈接),Web瀏覽器與Web服務(wù)器建立連接
  • 建立連接后,客戶端發(fā)送請(qǐng)求給服務(wù)器,請(qǐng)求的格式為: 統(tǒng)一資源標(biāo)識(shí)符(URL)+協(xié)議版本號(hào)(一般是1.1)+MIME信息(多個(gè)消息頭)+一個(gè)空行
  • 服務(wù)端收到請(qǐng)求后,給予相應(yīng)的返回信息,返回格式為: 協(xié)議版本號(hào) + 狀態(tài)行(處理結(jié)果) + 多個(gè)信息頭 + 空行 + 實(shí)體內(nèi)容(比如返回的HTML)
  • 客戶端接收服務(wù)端返回信息,通過瀏覽器顯示出來,然后與服務(wù)端斷開連接;當(dāng)然如果中途 某步發(fā)生錯(cuò)誤的話,錯(cuò)誤信息會(huì)返回到客戶端,并顯示,比如:經(jīng)典的404錯(cuò)誤!

對(duì)于上面的流程如果還不清晰,我們可以使用HttpWatch或者firefox抓下包: PS:測(cè)試網(wǎng)站是小豬的學(xué)校的教務(wù)系統(tǒng),輸入賬號(hào)密碼后請(qǐng)求登陸,我們可以看到下述信息:

HTTP請(qǐng)求包含的內(nèi)容:

HTTP響應(yīng)包括的內(nèi)容:

這就一目了然了是吧!

4)Http協(xié)議的業(yè)務(wù)流程

5)Http的幾種請(qǐng)求方式

實(shí)際開發(fā)中我們用得較多的方式是Get和Post,但是實(shí)際開發(fā)可能還會(huì)用到其他請(qǐng)求方式,比如PUT, 小豬的實(shí)際項(xiàng)目中就用到了,下面為了方便大家,就把所有的請(qǐng)求方式列出來吧:

  • Get:請(qǐng)求獲取Request-URI所標(biāo)識(shí)的資源
  • POST:在Request-URI所標(biāo)識(shí)的資源后附加新的數(shù)據(jù)
  • HEAD 請(qǐng)求獲取由Request-URI所標(biāo)識(shí)的資源的響應(yīng)信息報(bào)頭
  • PUT:請(qǐng)求服務(wù)器存儲(chǔ)一個(gè)資源,并用Request-URI作為其標(biāo)識(shí)
  • DELETE:請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源
  • TRACE:請(qǐng)求服務(wù)器回送收到的請(qǐng)求信息,主要用于測(cè)試或診斷
  • CONNECT:保留將來使用
  • OPTIONS:請(qǐng)求查詢服務(wù)器的性能,或者查詢與資源相關(guān)的選項(xiàng)

6)Get和Post的對(duì)比

用得最多的兩個(gè),當(dāng)然要做下對(duì)比啦!

  • GET:在請(qǐng)求的URL地址后以?的形式帶上交給服務(wù)器的數(shù)據(jù),多個(gè)數(shù)據(jù)之間以&進(jìn)行分隔, 但數(shù)據(jù)容量通常不能超過2K,比如:http://xxx?username=…&pawd=…這種就是GET
  • POST: 這個(gè)則可以在請(qǐng)求的實(shí)體內(nèi)容中向服務(wù)器發(fā)送數(shù)據(jù),傳輸沒有數(shù)量限制
  • 另外要說一點(diǎn),這兩個(gè)玩意都是發(fā)送數(shù)據(jù)的,只是發(fā)送機(jī)制不一樣,不要相信網(wǎng)上說的 "GET獲得服務(wù)器數(shù)據(jù),POST向服務(wù)器發(fā)送數(shù)據(jù)"!!另外GET安全性非常低,Post安全性較高, 但是執(zhí)行效率卻比Post方法好,一般查詢的時(shí)候我們用GET,數(shù)據(jù)增刪改的時(shí)候用POST??!

7)Http狀態(tài)碼合集

當(dāng)然,這些狀態(tài)碼只是要給參考,實(shí)際上決定權(quán)在服務(wù)器端(后臺(tái)的)手上,一種方案是請(qǐng)求后, 服務(wù)器返回給我們的是狀態(tài),或者另一種,在應(yīng)用不用弄多語言版本的時(shí)候最好用,直接返回 一串結(jié)果信息的Json給我們,我們直接顯示就好,這樣可以偷懶不少!下面列下狀態(tài)碼合集,參考 下就好:

  • 100~199 : 成功接受請(qǐng)求,客戶端需提交下一次請(qǐng)求才能完成整個(gè)處理過程
  • 200: OK,客戶端請(qǐng)求成功
  • 300~399:請(qǐng)求資源已移到新的地址(302,307,304)
  • 401:請(qǐng)求未授權(quán),改狀態(tài)代碼需與WWW-Authenticate報(bào)頭域一起使用
  • 403:Forbidden,服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)
  • 404:Not Found,請(qǐng)求資源不存在,這個(gè)就不用說啦
  • 500:Internal Server Error,服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤
  • 503:Server Unavailable,服務(wù)器當(dāng)前不能處理客戶端請(qǐng)求,一段時(shí)間后可能恢復(fù)正常

8)Http協(xié)議的特點(diǎn)

概念性的東西,知道就好,別去背,百度百科的東西,直接復(fù)制粘貼:

1. 支持客戶/服務(wù)器模式

2. 簡單快速:客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只需傳送請(qǐng)求方法和路徑。請(qǐng)求方法常用的有GET、 HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。 由于HTTP協(xié)議簡單,使得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)答就較快。

PS:關(guān)于OSI七層協(xié)議以及TCP四層模型就不在基礎(chǔ)系列講解了~有興趣可以自行了解下!


本節(jié)小結(jié):

本節(jié)講解了我們?cè)贏ndroid開發(fā)中涉及到網(wǎng)絡(luò)方面的要完成的工具,以及講解了Http協(xié)議的 相關(guān)概念,相信大家對(duì)Android移動(dòng)端與服務(wù)器交互已經(jīng)有了個(gè)模糊的映像,下節(jié)我們來研究 Http協(xié)議的請(qǐng)求頭與響應(yīng)頭!本節(jié)就到這里,謝謝~

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)