Android網絡編程-HTTP協議(超文本傳輸協議)原理


概述: HTTP是屬於應用層的面向對象的協議,常基於TCP協議。是無連接的,但HTTP1.1給出了一種持續連接的機制。


HTTP協議的特點(這部分內容來自互聯網):

  1. 支持客戶/服務器模式;
  2. 簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快;
  3. 靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記;
  4. 無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間;
  5. 無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快;

HTTP的URL(URL是一種特殊的URI):
URL的格式:http: //host[“:”port][abs_path]

  • http表示要通過HTTP協議來定位網絡資源;
  • host表示合法的Internet主機域名或者IP地址
  • port表示一個端口號。如果為空,則默認為80;
  • abs_path表示要請求的資源的URL。如果URL中沒有給出abs_path,那么必須以/代替abs_path,通常這個工作由瀏覽器代我們完成。
    比如:
       輸入:http://www.baidu.com
       瀏覽器自動轉換為:http://www.baidu.com/

HTTP報文分兩種:請求報文和響應報文。以下,我們分開講。


HTTP請求報文組成:請求行,消息報頭和請求正文。
該圖片來自互聯網


請求行由請求方法,URL字段和HTTP版本標識組成(忽略CRLF)。

(方法)請求方法分以下幾種(移動開發常用的有GET和POST):

  1. GET:請求獲得URL所標識的資源。瀏覽器采用這種方式獲取服務器資源;
  2. POST:請求服務器接收附加在URL所標識的資源后的新的數據。常用來提交表單。
  3. HEAD:請求獲取由URI所標識的資源的響應消息報頭;
  4. PUT:請求服務器存儲一個資源,並用URL標識這個資源;
  5. DELETE:請求服務器刪除這個URL標識的資源;
  6. TRACE:請求服務器回送收到的這個請求報文,這個主要用來測試;
  7. CONNECT:保留的方法;
  8. OPTIONS :請求查詢服務器的性能,或者查詢與資源相關的選項和需求;

注:HEAD方法與GET方法幾乎是一樣的,對於HEAD請求的回應部分來說,它的HTTP頭部中包含的信息與通過GET請求所得到的信息是相同的。利用這個方法,不必傳輸整個資源內容,就可以得到Request-URI所標識的資源的信息。該方法常用於測試超鏈接的有效性,是否可以訪問,以及最近是否更新(該部分內容來自互聯網)。


請求報頭

在請求行之后會有0個或者多個請求報頭,每個請求報頭都包含一個名字和一個值,它們之間用“:”分割。請求頭部會以一個空行,發送回車符和換行符,通知服務器以下不會有請求頭。關於請求報頭,會在后面的消息報頭一節做統一的解釋。

請求數據

請求數據不在GET方法中使用,而是在POST方法中使用。POST方法適用於需要客戶填寫表單的場合,與請求數據相關的最常用的請求頭是Content-Type和Content-Length。


HTTP響應報文組成: 狀態行、消息報頭、響應正文。

該圖片來自互聯網


狀態行由HTTP協議版本,響應狀態碼和狀態碼的文本描述組成。狀態碼,我在這就不介紹了,大家可以自行Google。


關於消息報頭部分可以參考:
http://blog.csdn.net/itachi85/article/details/50982995


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com