从API23移除Apache HTTP客户端会对Volley产生影响吗?

时间:2015-09-09 06:23:59

标签: android apache httpresponse android-volley android-api-levels

我们已知道 API 23

中删除了Apache HTTP Client

Apache HTTP Client Removal

但是,Volley库目前仍然使用Apache的库,例如

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.cookie.DateUtils;

我测试了2个项目:一个用compileSdkVersion 22,另一个用compileSdkVersion 23,有两个截图:

compileSdkVersion 22

enter image description here

compileSdkVersion 23

enter image description here

我有两个问题:

  1. 当然,使用Volley的API23项目仍然可以成功运行。 但是,我不明白他们如何在运行时使用Apache的库,这样做 在API22或更低版本中找到?
  2. 而且,我想知道在不久的将来,Volley会不会升级 不再使用Apache的库?如果没有,当Apache的库被完全删除并且不受支持时,我的当前项目将来是否仍然可用?
  3. 也许我的英语不太清楚,但是,希望你理解我的问题。

    任何解释都将不胜感激。

    更新

    从@ random的评论中,我创建了一个新的API23项目,使用谷歌的官方Volley库(我的意思是git clone https://android.googlesource.com/platform/frameworks/volley,如谷歌建议here),而不是compile 'com.mcxiaoke.volley:library:1.0.17'使用build.gradle文件。是的,在构建项目时因缺少Apache库而出错。必须将useLibrary 'org.apache.http.legacy'添加到build.gradle文件中,如文档所示。

    第二次更新:

    我刚刚定制了Google的排球(作为我项目中的模块),删除了Apache库。请转到my GitHub sample project以供参考。但请注意,它尚未针对所有情况进行全面测试,我仅测试了02个简单案例:GETPOST请求我的网络服务ASP.NET Web API

5 个答案:

答案 0 :(得分:10)

Android M中的Volley库似乎一直混乱。已经为它提交了一个bug并得到谷歌的认可。

https://code.google.com/p/android-developer-preview/issues/detail?id=3013

您应该标记并跟踪它以进行任何进一步的更新

更新

关于您的第一个问题,您不会因丢失apache文件而收到错误,因为您使用的库仍然使用API​​ 22进行编译

ANDROID_BUILD_TARGET_SDK_VERSION=22
ANDROID_BUILD_TOOLS_VERSION=22.0.1
ANDROID_BUILD_SDK_VERSION=22

https://github.com/mcxiaoke/android-volley/blob/master/gradle.properties

同时从库中查看此open issue 根据您可以添加旧库

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

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

答案 1 :(得分:2)

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

dependencies {
    compile 'commons-httpclient:commons-httpclient:3.1'
}

答案 2 :(得分:1)

将此添加到您的应用的de依赖项,然后正常工作:

依赖{ ...   编译' org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' }

答案 3 :(得分:0)

对于Apache的HTTP客户端来说,这是一个巨大的歇斯底里。您可以在任何您想要的项目中继续使用它而不会产生任何后果。为什么浪费时间将代码移植到其他库?我在这里描述了继续使用Apache库的最佳方法:https://stackoverflow.com/a/37623038/1727132(剧透:不要使用旧版本!)

答案 4 :(得分:0)

如果您仍在使用Apache Http客户端,则{p> Appache Http将从API level 23