1. 程式人生 > >Http研究心得+面試心得

Http研究心得+面試心得

四、HttpCient:

HttpClient是Apache開源組織提供的HTTP網路訪問介面(一個開源的專案),從名字上就可以看出,它是一個簡單的HTTP客戶端(並不是瀏覽器),可以傳送HTTP請求,接受HTTP響應。但是不會快取伺服器的響應,不能執行HTTP頁面中籤入嵌入的JS程式碼,自然也不會對頁面內容進行任何解析、處理,這些都是需要開發人員來完成的。

現在Android已經成功集成了HttpClient,所以開發人員在Android專案中可以直接使用HttpClient來想Web站點提交請求以及接受響應,如果使用其他的Java專案,需要引入進相應的Jar包。HttpClient可以在官網上下載。官網連結:

http://hc.apache.org/downloads.cgi

HttpClient其實是一個interface型別,HttpClient封裝了物件需要執行的Http請求、身份驗證、連線管理和其它特性。既然HttpClient是一個介面,因此無法建立它的例項。從文件上看,HttpClient有三個已知的實現類分別是:AbstractHttpClient, AndroidHttpClient, DefaultHttpClient,會發現有一個專門為Android應用準備的實現類AndroidHttpClient,當然使用常規的DefaultHttpClient也可以實現功能。

從兩個類包所有在位置就可以看出區別,AndroidHttpClient定義在android.net.http.AndroidHttpClient包下,屬於Android原生的http訪問,而DefaultHttpClient定義在org.apache.http.impl.client.DefaultHttpClient包下,屬於對apche專案的支援。而AndroidHttpClient沒有公開的建構函式,只能通過靜態方法newInstance()方法來獲得AndroidHttpClient物件。

簡單來說,用HttpClient傳送請求、接收響應都很簡單,只需要五大步驟即可:(要牢記)

  • 建立代表客戶端的HttpClient物件。
  • 建立代表請求的物件,如果需要傳送GET請求,則建立HttpGet物件,如果需要傳送POST請求,則建立HttpPost物件。注:對於傳送請求的引數,GET和POST使用的方式不同,GET方式可以使用拼接字串的方式,把引數拼接在URL結尾;POST方式需要使用setEntity(HttpEntity entity)方法來設定請求引數。
  • 呼叫HttpClient物件的execute(HttpUriRequest request)傳送請求,執行該方法後將獲得伺服器返回的HttpResponse物件。伺服器發還給我們的資料就在這個HttpResponse相應當中
    。呼叫HttpResponse的對應方法獲取伺服器的響應頭、響應內容等。
檢查相應狀態是否正常。伺服器發給客戶端的相應,有一個相應碼:相應碼為200,正常;相應碼為404,客戶端錯誤;相應碼為505,伺服器端錯誤。 獲得相應物件當中的資料