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