關於安卓HTTP請求用HttpUrlConnection還是HttpClient好

來源:互聯網
上載者:User

標籤:android   blog   http   io   ar   使用   java   sp   檔案   

轉至 http://blog.csdn.net/huzgd/article/details/8712187

安卓和JAVA應用開發少不了要提交HTTP請求,而基本上目前有兩個實現方式:HttpUrlConnection(即URL.openConnection)和HttpClient。

網上不少人都認為HttpClient更好,理由是功能更強,BUG更少,更容易控制細節。但我個人認為普通JAVA人員可選用HttpClient,安卓開發人員則應該使用HttpUrlConnection,理由如下:

1.HttpClient是apache的開源實現,而HttpUrlConnection是安卓標準實現,安卓SDK雖然整合了HttpClient,但官方支援的卻是HttpUrlConnection;

2.HttpUrlConnection直接支援GZIP壓縮;HttpClient也支援,但要自己寫代碼處理;我們之前測試HttpUrlConnection的GZIP壓縮在傳大檔案分包trunk時有問題,只適合小檔案,不過這個BUG後來官方說已經修複了;

3.HttpUrlConnection直接支援系統級串連池,即開啟的串連不會直接關閉,在一段時間內所有程式可共用;HttpClient當然也能做到,但畢竟不如官方直接系統底層支援好;

4.HttpUrlConnection直接在系統層面做了緩衝策略處理,加快重複請求的速度。

一年多前我在開始搞安卓開發時,就自己寫了一個小程式,測試HttpUrlConnection和HttpClient兩種串連方式的串連讀取速度,分別訪問百度和CSDN的首頁。選擇這兩網站因為一個是較少資料,另一個是較大資料。當前用的是i9000手機,安卓2.2的系統,移動EDGE網路,APN為CMNET,程式啟動一個服務每隔半分鐘執行一次測試,包括連線速度和讀取速度,然後將日誌以CSV格式儲存分析,結果非常意外,HttpUrlConnection讀取CSDN比HttpClient快了幾倍,具體數字已經不記得了。當然了,現在網路系統內容都不一樣了,本想現在再拿來跑一下,不過時代久遠,這個程式已經沒了;剛才在硬碟上找了一下,程式和代碼沒找著,只好算了。後來分析,本來兩者相差不應該有這麼大,估計是GZIP壓縮的功勞,但連線速度上HttpUrlConnection也是要略快一點的。

Google自己也是推薦用HttpUrlConnection,對它進行了大量的最佳化,這個從安卓的協助文檔可以看出來:

http://developer.android.com/reference/java/net/HttpURLConnection.html

安卓開發部落格上也強調,2.2以後的安卓都應該用HttpUrlConnection(這個需要FQ):

http://android-developers.blogspot.com/2011/09/androids-http-clients.html

總之,在安卓開發上,雖然HttpClient更好地支援很多細節的控制(如代理、COOKIE、鑒權、壓縮、串連池),但相應地對開發人員要求更高,代碼寫起來更複雜,普通開發人員很難做到對它很好地駕馭,官方的支援也越來越少;而HttpUrlConnection對大部分工作進行了封裝,屏蔽了不需要的細節,更適合開發人員直接調用,而且官方對它的支援和最佳化也會越來越好。我們既然是做安卓應用的開發,自然要遵循安卓官方的指引,選用HttpUrlConnection。

關於安卓HTTP請求用HttpUrlConnection還是HttpClient好

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.