Google官方在API級別22的時候已經棄用HttpClient,在API級別23,更是將Apache HTTP Client給剔除了。
來看看官方的解釋:
大概的意思是:Android的6.0版本中刪除了的Apache HTTP客戶端支持。如果您的應用程序使用此客戶端和目標的Andr??oid 2.3(API等級9)或更高,使用HttpURLConnection類代替。此API是更有效的,因為它減少了通過透明壓縮和響應緩存網絡的使用,并減少功耗。要繼續使用的Apache HTTP API,您必須在您的build.gradle文件中添加下面的一句話:
android{
useLibrary 'org.apache.http.legacy'
}
以下是本人遷移項目到AS使用Apache HTTP Client遇到的問題及解決方法:
Android Studio(以下均稱AS)已越來越多人用了,已成為Android開發者的首選開發工具,Google在2015年也宣布AS將取代Eclipse(以下均稱EC);
基于以上原因,本人需要將在EC中寫的項目遷移到AS上來,本人已經將AS升級到了2.0;EC中的項目想導入AS中,其實也很簡單,我們看圖說話,這樣簡單明了
點擊 圖-1? 箭頭上的項,導入你在EC中的項目.然后一步一步點擊下去直到Finish就好了,它自己會幫你構建;
本人將EC中的項目導入AS中,也會有一些小錯誤,在AS中的代碼是非常嚴格的 ?比如.9圖(我們稱之為"九妹"),有些九妹并不是真的九妹,AS是可以檢測的出來的,只要把你錯的九妹改成真正的九妹就不會報錯了;不多說了;
本人的EC項目中使用了Apache的Http API,導入AS中報錯了,看圖
解決方法:
一、在Android官方的解決辦法是
1.在你的build.gradle中添加
android{
useLibrary 'org.apache.http.legacy'
}
2.同步你的項目(這個使用AS的大神們應該懂的吧,就不說了).
我們就實踐一下看看有木有效果:
a.添加 useLibrary 'org.apache.http.legacy'
b.同步項目
c.在報錯的地方引入包Apache的包
在圖-5中我們看見是可以引入包的,但是我們看見的是劃了一條橫線,這表明在Android 6.0中已過時.提示過時就過時吧,將就用吧。
二、解決Apache包不存在的方法二
1.在build.grade中添加
dependencies{
compile'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
2.同步項目
在看看效果:
a.
b.同步項目
c.看效果
看,這次我們發現沒有劃橫線了;
其實哪種方法都可以的,
還是建議Android開發者使用OkHttp或者URLConnection代替Apache http;
又到二十四點了,又是一天,記錄工作中的點點滴滴。祝各位晚安,做個好夢!
E