java - urlencodedformentity - jsp httpurlconnection




Apache http客戶端或URLConnection (2)

在薑餅和後來,HttpURLConnection是要走的路。 考慮不推薦使用Apache HttpClient。 (另請注意,Android不使用HttpClient 4.1,在另一條評論中提及。)

如果您有Apache HttpClient更快的情況,請在此處將其報告為錯誤: http://code.google.com/p/android/issues/listhttp://code.google.com/p/android/issues/list

我需要在Android應用程序上下載一個網頁,我很難決定是否使用android apache http客戶端或java的URLConnection。

有什麼想法嗎?


自Gingerbread以來,Google一直默默地棄用Apache HTTP客戶端: android-developers.blogspot.com/2011/09/…android-developers.blogspot.com/2011/09/… 。 雖然他們沒有使用已棄用的註釋來標記它,但他們建議您將HttpURLConnection用於新應用程序: it is where we [Google] will be spending our energy going forward

我個人不喜歡這個決定,寧可堅持使用HttpClient 4.1+,因為它更快,錯誤更少,並且會定期更新。 雖然您無法將系統庫升級到4.1版,但您可以將HttpClient jar包含到您的Android項目中(因為這將使您不依賴於Google錯誤修復和供應商更新的額外好處)。 然而,有一個缺陷:為了防止與內置庫發生可能的衝突,您應該使用JarJar工具重命名httpclient包。 原來有人已經這樣做了(重新打包的jar和Android庫項目可供下載):

http://code.google.com/p/httpclientandroidlib/

這是針對Android的HttpClient 4.1的重新打包。 Android SDK中的HttpClient版本為4.0beta2。 自從4.0beta以來,已經對HttpClient和一些急需的錯誤修正(如auth緩存)進行了一些更新。

由於Google已棄用HttpClient而支持Java標準HttpURLConnection,因此我創建了一個腳本,將Apache的HttpClient的股票版本轉換為Android庫。

庫存HttpClient的變化

  • 將所有包org.apache.http重命名為ch.boye.httpclientandroidlib
  • 刪除了依賴於org.ietf的所有類。*(SPNEGO身份驗證)
  • 用android.util.Base64替換了org.apache.commons.codec.binary.Base64
  • 創建了一個新類HttpClientAndroidLog來替換org.apache.commons.logging






apache-commons-httpclient