轉-Android連網 — HttpURLConnection和HttpClient選擇哪個好?

來源:互聯網
上載者:User

標籤:

 

http://www.ituring.com.cn/article/199619?utm_source=tuicool

 

 在Android開發中,訪問網路我們是選擇HttpURLConnection還是HttpClient好呢?這兩種網路通訊協定又有什麼區別呢?下面我們就一起來look look。

 1、HttpClient

  HttpClient擁有DefaultHttpClient和AndroidHttpClient兩個具體的實作類別,它們都有眾多的API,而且實現比較穩定,bug數量也很少。

  但也正是因為HttpClient的API數量過多,使得我們很難在不破壞相容性的情況下對它進行升級和擴充,所以目前AndroidTeam Dev在提升和最佳化HttpClient方面的工作態度並不積極。

  2、HttpURLConnection

  HttpURLConnection是一種多用途、輕量極的HTTP用戶端,使用它來進行HTTP操作可以適用於大多數的應用程式。雖然HttpURLConnection的API提供的比較簡單,但是同時這也使得我們可以更加容易地去使用和擴充它。

不過在Android 2.2版本之前,HttpURLConnection一直存在著一些令人厭煩的bug。比如說對一個可讀的InputStream調用close()方法時,就有可能會導致串連池失效了。那麼我們通常的解決辦法就是直接禁用掉串連池的功能:

  代碼:

  private void disableConnectionReuseIfNecessary() {

  // 這是一個2.2版本之前的bug

  if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {

  System.setProperty("http.keepAlive", "false");

  }
  }

  3、到底哪一種才是最好的?

 
  不同版本,最佳選擇肯定有所不同,在Android 2.2版本之前,HttpClient擁有較少的bug,因此使用它是最好的選擇。

   而在Android 2.3版本及以後,HttpURLConnection則是最佳的選擇。它的API簡單,體積較小,因而非常適用於Android項目。壓縮和緩衝機制可以有效地減少網路訪問的流量,在提升速度和省電方面也起到了較大的作用。對於新的應用程式應該更加偏向於使用HttpURLConnection,因為在以後的工作當中我們也會將更多的時間放在最佳化HttpURLConnection上面。    因此大家在開發Android應用的時候,要看自己是開發給什麼Android版本的使用者使用的,如果勘探是Android 2.2版本及以下,則選用HttpClient,如果勘探是Android 2.3版本及以上,則選擇HttpURLConnection。但是現在軟體更新換代這麼快,相信絕大部分的Android應用勘探群都是Android 2.3版本及以上,所以當下來說,HttpURLConnection應該是更受親睞的選擇。

轉-Android連網 — 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.