误区解惑android-6.0及以上系统可直接使用volley

看到网上说android 6.0 系统源码已删除HttpClient的相关类,volley要兼容6.0

解决方法如下:

1.eclipse:

libs中加入
org.apache.http.legacy.jar
上面的jar包在:sdk\platforms\android-23\optional下(需要下载android 6.0的SDK)

2.android studio:
在相应的module下的build.gradle中加入:
android {
    useLibrary 'org.apache.http.legacy'
}

后来我在android studio项目中怀着研究的心态尝试删除这句配置,编译可以通过,在8.0系统上安装可以正常运行。

于是我反编译了自己的apk,看看是否编译的时候就已将相关类打包进apk了呢。


结果证明并没有打包进apk;

将compileSdkVersion设置为22是可以找到org.apache.http下面的类的如(org.apache.http.impl.client.DefaultHttpClient),如果将compileSdkVersion >= 23编译器则会报错,找不到该类。

于是我便通过反射获取org.apache.http.impl.client.DefaultHttpClient,结果在8.0系统上可以找到。于是我就在8.0系统源码中搜索DefaultHttpClient,结果搜到了。路径如下

android-8.0.0_r1\external\apache-http\src\org\apache\http\impl\client.DefaultHttpClient.java

得出结论:

6.0只是sdk中删除了org.apache.http相关类,系统中依然保留(反射可以获取到)。

所以volley无需添加任何代码可在6.0以上系统运行。

如果自己项目中编写的代码需要用的org.apache.http相关类,则需添加配置

android {
    useLibrary 'org.apache.http.legacy'
}

有了这个配置,编译器会将

sdk\platforms\android-23\optional\org.apache.http.legacy.jar 添加外部依赖,编译器就不会报错。
Volley是一个优秀的安卓开源网络访问工具,这里包含了volley jar包和源码,版本是2015.07.28的1.0.18版本。更多资料可以参见volley的github地址: https://github.com/mcxiaoke/android-volley 1.0.18 2015.07.28 merge upstream, process response bodies only when present tweak getCacheKey(), using method and original url, fix #67 #78 add RedirectError, wrong exception for http 301 and 302, fix #51 make NetworkResponse Serializable, fix #53 create NetworkError using IOException, not using null response 1.0.17 2015.07.13 merge upstream, stop logging slow requests outside of debug logs merge pr #64, fix leaking the last request object 1.0.16 2015.05.18 fix duplicate retry, change DEFAULT_MAX_RETRIES to 0 merge pr, fix NegativeArraySizeException merge upstream, Use a BufferedOutputStream to read and write cache 1.0.15 2015.03.18 add two missing constructors for JsonArrayRequest and JsonObjectRequest add unique identifier for Request 1.0.14 2015.03.17 add more constructors for JsonArrayRequest and JsonObjectRequest update and fix gradle build, using new build.gradle 1.0.13 2015.03.16 merge pr, added constructor to JSONArrayRequest 1.0.12 2015.03.12 merge upstream, fix ImageLoader.getCacheKey() merge upstream, Fix broken DiskBasedCache merge upstream, Modify header parser to handle must-revalidate. 1.0.11 2015.03.03 merge upstream, Add a RequestFinishedListener to RequestQueue. merge upstream, Change the default character encoding for JSON responses to UTF-8 1.0.10 2014.12.30 merge upstream, Use the view size and scale type to restrict NIV requests. merge pr, Add a getImageURL method to NetworkImageView merge pr, Add the options of setting DiskBasedCache sizes in Volley.java 1.0.9 2014.11.26 merge upstream, Fix deprecation warnings (now errors in 0.14.4) w/ gradle. 1.0.8 2014.11.07 merge upstream, Metric for network time and getBackoffMultiplier() 1.0.7 2014.10.13 merge upstream, Add locale to HttpHeaderParserTest.rfc1123Date(long millis) merge upstream, Copy cache header for 304 response 1.0.6 2014.09.10 merge pr, fixed bug where Disk cache misses for redirects merge upstream, Fix crash/OOM in DiskBasedCache merge upstream, allow use of custom ImageRequests in ImageLoader 1.0.5 2014.06.18 merge upstream, Fixes bug in PATCH method. Sets the method before setting the body. update gradle and build tools version, fix build 1.0.4 2014.05.04 merge upstream, Guard against NullPointerException currently occurring in Volley when a Request is given a url whose host is null. 1.0.3 2014.04.01 merge upstream, ImageLoader: setError after null check 1.0.2 2014.02.28 merge upstream, Use the view size to restrict NIV requests. merge upstream, Fix generic type parameter for RequestQueue.add(Request) merge pr, added support for handling 301 and 302 http redirects using standalone deploy gradle build file and script 1.0.1 2014.02.13 add gradle build support, add readme, release using gradle 1.0.0 2014.01.03 create volley mirror at github, release first version
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值