我们已知道 API 23
中删除了Apache HTTP Client
但是,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
compileSdkVersion 23
我有两个问题:
Apache
的库,这样做
在API22或更低版本中找到?Apache
的库?如果没有,当Apache
的库被完全删除并且不受支持时,我的当前项目将来是否仍然可用?也许我的英语不太清楚,但是,希望你理解我的问题。
任何解释都将不胜感激。
更新
从@ 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个简单案例:GET
和POST
请求我的网络服务ASP.NET Web API
。
答案 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)
答案 4 :(得分:0)
Appache Http
将从API level 23