安卓開發 HttpClient使用

2021-06-17 00:16:56 字數 1596 閱讀 7222

httpclient其實是乙個inte***ce型別,httpclient封裝了物件需要執行的http請求、身份驗證、連線管理和其它特性。從文件上看,httpclient有三個已知的實現類分別是:abstracthttpclient, androidhttpclient, defaulthttpclient,會發現有乙個專門為android應用準備的實現類androidhttpclient,當然使用常規的defaulthttpclient也可以實現功能,但是既然開發的是android應用程式,還是使用android專有的實現類,一定有其優勢。

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

androidhttpclient對於defaulthttpclient做了一些改進,使其更使用用於android專案:

1.關掉過期檢查,自連線可以打破所有的時間限制。

2.可以設定connectiontimeout(連線超時)和sotimeout(讀取資料超時)。

3.關掉重定向。

4.使用乙個session緩衝用於ssl sockets。

5.如果伺服器支援,使用gzip壓縮方式用於在服務端和客戶端傳遞的資料。

6.預設情況下不保留cookie.

簡單來說,送httpclient傳送請求、接收響應都很簡單,只需要幾個步驟即可:

1.建立httpclient物件。

2.建立對應的傳送請求的物件,如果需要傳送get請求,則建立httpget物件,如果需要傳送post請求,則建立httppost物件。

3.對於傳送請求的引數,get和post使用的方式不同,get方式可以使用拼接字串的方式,把引數拼接在url結尾;post方式需要使用setentity(httpentity entity)方法來設定請求引數。

4.呼叫httpclient物件的execute(httpurirequest request)傳送請求,執行該方法返回乙個httpresponse物件。

5.呼叫httpresponse的對應方法獲取伺服器的響應頭、響應內容等。

-----------------------

但是也不能否認apache httpclient,它有大量的靈活的api,實現比較穩定,少有bug,可造成的問題就是很難在不影響其相容性的情況下對其進行改進了。現在android開發者已經慢慢放棄apache httpclient的使用,轉而使用httpurlconnection。但是對於android2.2之前的版本,httpurlconnection具有乙個致命的bug,在響應輸入流inputstream中呼叫.close()方法將會阻礙連線池,因為這個bug,只能放棄連線池的使用,但是apache httpclient不存在這個問題,當然android2.3之後的版本中,httpurlconnection已經解決了這個bug,可以放心使用。

安卓開發 ContentProvider使用

contentprovider是安卓開發中,必學的幾大模組之一。下面是使用它來訪問 簿,拿出聯絡人並顯示。package com.example.contentprovidertest import android.os.bundle import android.provider.contacts...

如何使安卓更省電

android程式中耗電最多的地方在以下幾個方面 1 大資料量的傳輸。2 不停的在網路間切換。3 解析大量的文字資料。那麼我們怎麼樣來改善一下我們的程式呢?1 在需要網路連線的程式中,首先檢查網路連線是否正常,如果沒有網路連線,那麼就不需要執行相應的程式。檢查網路連線的方法如下 很多人開發的程式後台...

bluetooth spp安卓開發

在開發有關android的藍芽spp服務時,發現了一點問題,需要注意的是,在連線spp服務的時候,有可能直接呼叫connect會出現exception的問題,因此,對於spp的服務應當有兩種實現比較保險,spp的服務特徵碼 uuid 00001101 0000 1000 8000 00805f9b3...