https://www.cnblogs.com/liushuibufu/p/4140913.html
-
功能用法對比
-
從功能上對比,HttpURLConnection比HttpClient庫要豐富很多,提供了很多工具,封裝了http的請求頭,參數,內容體,響應,還有一些高級功能,代理、COOKIE、鑒權、壓縮、連接池的處理。
-
HttpClient高級功能代碼寫起來比較復雜,對開發人員的要求會高一些,而HttpURLConnection對大部分工作進行了包裝,屏蔽了不需要的細節,適合開發人員直接調用。
-
另外,HttpURLConnection在2.3版本增加了一些HTTPS方面的改進,4.0版本增加一些響應的緩存。
-
-
性能對比
-
HttpUrlConnection直接支持GZIP壓縮;HttpClient也支持,但要自己寫代碼處理。
-
HttpUrlConnection直接支持系統級連接池,即打開的連接不會直接關閉,在一段時間內所有程序可共用;HttpClient當然也能做到,但畢竟不如官方直接系統底層支持好。
-
HttpUrlConnection直接在系統層面做了緩存策略處理(4.0版本以上),加快了重復請求的速度。
-
這篇文章對兩者的速度做了一個對比,做法是兩個類都使用默認的方法去請求百度的網頁內容,測試結果是使用httpurlconnection耗時47ms,使用httpclient耗時641ms。httpURLConnection在速度有比較明顯的優勢,當然這跟壓縮內容和緩存都有直接關系。
-
-
未來發展
-
HttpClient 適用於 web browsers, 他們是可擴展的,並且擁有大量的穩定APIs。但是,在不破壞其兼容性的前提下很難對如此多的APIs做修改。因此,Android 團隊對修改優化Apache HTTP Client表現的並不積極。
-
HttpURLConnect 是一個通用的、適合大多數應用的輕量級組件。這個類起步比較晚,很容易在主要API上做穩步的改善。但是HttpURLConnection在在Android 2.2及以下版本上存在一些令人厭煩的bug,尤其是在讀取 InputStream時調用 close()方法,就有可能會導致連接池失效了。
-
Android團隊未來的工作會將更多的時間放在優化HttpURLConnection上,它的API簡單,體積較小,因而非常適用於Android項目。壓縮和緩存機制可以有效地減少網絡訪問的流量,在提升速度和省電方面也起到了較大的作用。
-
-
選用建議
-
如果一個Android應用需要向指定頁面發送請求,但該頁面並不是一個簡單的頁面,只有當用戶已經登錄,而且登錄用戶的用戶名有效時才可訪問該頁面。如果使用HttpURLConnection來訪問這個被保護的頁面,那么需要處理的細節就太復雜了。這種情況建議使用HttpClient。
-
Android2.3及以上版本建議選用HttpURLConnection,2.2及以下版本建議選用HttpClient。新的應用都建議使用HttpURLConnection。
-