大多數(shù)的Android應用程序都會使用HTTP協(xié)議來發(fā)送和接收網(wǎng)絡數(shù)據(jù),而android中主要提供了兩種方式來進行HTTP操作:HttpURLConnection和HttpClient茴丰,這兩種方式都支持HTTPS協(xié)議动分、以流的形式進行上傳和下載昨凡、配置超時時間芥炭、IPv6、以及連接池等功能吧黄。
盡管網(wǎng)上很多人很推崇HttpClient,但Google官方對HttpClient并不感冒产场,在Android5.1后廢止了HttpClient的Api鹅髓。DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient具體的實現(xiàn)類,它們都擁有眾多的API京景,而且實現(xiàn)比較穩(wěn)定窿冯,bug數(shù)量也很少,但同時也由于HttpClient的API數(shù)量過多确徙,使得我們很難在不破壞兼容性的情況下對它進行升級和擴展醒串。而HttpURLConnection是一種多用途、輕量極的HTTP客戶端鄙皇,使用它來進行HTTP操作可以適用于大多數(shù)的應用程序芜赌,雖然HttpURLConnection的API提供的比較簡單,但是同時這也使得我們可以更加容易地去使用和擴展它伴逸。
在Android 2.2版本之前缠沈,HttpClient擁有較少的bug,因此使用它是最好的選擇违柏。而在Android 2.3版本及以后,HttpURLConnection則是最佳的選擇香椎。HttpURLConnection的API簡單漱竖、體積較小,因而非常適用于Android項目畜伐,壓縮和緩存機制可以有效地減少網(wǎng)絡訪問的流量馍惹,在提升速度和省電方面也起到了較大的作用,對于新的Android應用程序應該更加偏向于使用HttpURLConnection玛界。在Api level 22(android 5.1)后万矾,谷歌官方廢止了HttpClient的Api,如果想繼續(xù)使用HttpClient慎框,得在build.gradle中添加一句話良狈。
關(guān)于Android 5.1版本后HttpClinet廢止,繼續(xù)使用HttpClinet的方法:
在app下build.gradle中的android閉包內(nèi)添加:
useLibrary 'org.apache.http.legacy'