Android中的Http通信(一)之Http協議基本知識

寫了這麼久的項目,幾乎每個項目都用到了網絡請求,不對,是所有的項目吐舌頭。一直沒有對這一塊做過詳細的總結,今天結合一些網上的資料以及自己的理解,來談談Http。廢話不多說,直奔正題吧......

我們如果想要真正的瞭解Http,我們必須要知道什麼是Http?

一、什麼是Http?

超文本協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲廣泛的一種網絡協議。Http定義了瀏覽器(即萬維網客戶進程)怎樣向萬維網服務器請求萬維網文檔,以及服務器怎麼把文檔傳給瀏覽器。Http是萬維網可靠的交換文件(包括文本、圖像、聲音、以及視頻等)的基礎。

工作流程:一次的Http請求成爲一次事務,其工作流程可以分爲四步:

1、首先客戶端和服務器需要建立連接。這個是從客戶端發起的。

2、建立連接之後,客戶端發送一個請求給服務器,請求方式的格式爲:統一資源定位符(URL)、協議版本號、後邊是MIME的信息(請求的是文本、圖像、聲音、視頻.....)包括請求修飾符、客戶端的信息以及可能的內容。

3、服務器接到請求後,基於相應的響應信息,其格式爲一個狀態行、包括信息的協議版本號、一個成功或者錯誤的代碼、後邊是MIME信息包括服務器信息,實體信息以及一些可能的內容。

4、客戶端接受到服務器端返回的信息之後,根據需要將信息展示出來,然後斷開與服務器的連接。

                              

Http協議永遠是客戶端發起,服務器端響應。

二、什麼是URL?

統一資源定位符(Uniform Resource Locator),是因特網上標準的資源地址。URL格式主要分爲三個部分:

1、協議,如Http、Https。

2、存有該資源的IP地址,有時候也包括端口號。如:192.168.1.112(現在基本使用域名代替,如:www.baidu.com)

3、主機資源的具體地址。如文件和目錄名。如:index.jsp或aaa.doc

1和2之間用“://”隔開,2和3用“/”分開。1和2是不可缺少的,3是可以缺少的。

三、什麼是TCP三次握手?

SYN(synchronousTCP/IP建立連接時的握手信號。ACKacknowledgement)爲確認符,在數據通信中,接收站發給發送站的一種傳輸類控制字符。表示發來的數據已確認接受。

    過程如下圖所示:

                  

     在客戶端和服務器建立正常的TCP網絡連接的時候,客戶端首先會向服務器發送一個SYN信息,服務器使用SYN+ACK應答表示接收到了這個消息,最後客戶端再以ACK消息響應,這樣一來,客戶端和服務器之間就建立了一種可靠的TCP連接,數據可以在客戶端和服務器之間進行傳遞。

四、Http請求方式?

GET:請求獲取Request-Uri所標識的資源

POST:在Request-Uri所標識的資源後附加新的數據

GetPost是比較常見的Http請求方式,另外還有HEADPUTDELETETRACECONNECTOPTIONS

五、Http響應碼信息?

200 OK  //客戶端請求成功

400 Bad Request  //客戶端請求有語法錯誤,不能被服務器所理解

401 Unauthorized  //請求未經授權,這個狀態碼必須和WWW-Authenticate報頭一起使用

403 Forbidden  //服務器收到請求,但是拒絕提供服務

404 Not Found  //請求資源不存在,大多是輸入了錯誤的URL

500 Internal Server Error  //服務器發生不可預期的錯誤

503 Server Unavailable  //服務器不能處理當前客戶端的請求,一段時間後可能會恢復正常

六、Http協議的特點?

1、支持客戶端/服務器模式:就是客戶端請求,服務器做出響應。

2、簡單快速:客戶端向服務器請求服務時,是需要傳入請求方法和路徑。請求方法常用的有GETPOST。每種方法都規定了客戶端與服務器聯繫的類型不同。

3、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

4、無連接:無連接的含義就是限制每次連接只處理一個請求。服務器處理完客戶端的請求,並收到客戶端的應答之後,即立即斷開連接。

5、無狀態:HTTP協議是無狀態的協議。無狀態就是指協議對於事務的處理是沒有記憶能力的。缺少狀態就意味着如果後續處理需要前面的信息,則必須重新傳送,這樣會導致每次連接傳送的數據量大。另一方面,在服務器不需要先前信息時,它的應答就會較快。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章