Google官方在API级别22的时候已经弃用HttpClient,在API级别23,更是将Apache HTTP Client给剔除了。
来看看官方的解释:
官方资料大概的意思是:Android的6.0版本中删除了的Apache HTTP客户端支持。如果您的应用程序使用此客户端和目标的Android 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点击 图-1 箭头上的项,导入你在EC中的项目.然后一步一步点击下去直到Finish就好了,它自己会帮你构建;
本人将EC中的项目导入AS中,也会有一些小错误,在AS中的代码是非常严格的 比如.9图(我们称之为"九妹"),有些九妹并不是真的九妹,AS是可以检测的出来的,只要把你错的九妹改成真正的九妹就不会报错了;不多说了;
本人的EC项目中使用了Apache的Http API,导入AS中报错了,看图
图-2解决方法:
一、在Android官方的解决办法是
1.在你的build.gradle中添加
android{
useLibrary 'org.apache.http.legacy'
}
2.同步你的项目(这个使用AS的大神们应该懂的吧,就不说了).
我们就实践一下看看有木有效果:
a.添加 useLibrary 'org.apache.http.legacy'
图-3b.同步项目
图-4c.在报错的地方引入包Apache的包
图-5在图-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.
图-6b.同步项目
c.看效果
图-7看,这次我们发现没有划横线了;
其实哪种方法都可以的,
还是建议Android开发者使用OkHttp或者URLConnection代替Apache http;
又到二十四点了,又是一天,记录工作中的点点滴滴。祝各位晚安,做个好梦!
E
网友评论