【发布时间】:2015-12-04 23:49:09
【问题描述】:
正如我们所知,Apache HTTP Client 在 API 23
但是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,得到了 2 个屏幕截图:
compileSdkVersion 22
compileSdkVersion 23
我有两个问题:
- 当然,使用 Volley 的 API23 项目仍然可以成功运行。
但是,我不明白他们如何在运行时使用
Apache的库,是吗? 在 API22 或更低版本中查找? - 另外,不知道在不久的将来,Volley会不会升级成这样
不再使用
Apache的库?如果没有,当Apache的库被完全删除且不受支持时,我当前的项目将来是否仍然有效?
也许我的英语不是很清楚,但是,希望你能理解我的问题。
任何解释将不胜感激。
更新:
从@random 的cmets,我使用Google 的官方Volley 库(我的意思是git clone https://android.googlesource.com/platform/frameworks/volley,正如Google 建议的here)创建了一个新的API23 项目,而不是在build.gradle 文件中使用compile 'com.mcxiaoke.volley:library:1.0.17'。是的,在构建项目时出现了缺少 Apache 库的错误。必须按照文档将useLibrary 'org.apache.http.legacy' 添加到build.gradle 文件中。
第二次更新:
我刚刚自定义了 Google 的 volley(作为我项目中的一个模块)删除 Apache 库。请转至my GitHub sample project 供您参考。但是,请注意,它并未针对所有案例进行全面测试,我仅测试了 02 个简单案例:GET 和 POST 使用我的 Web 服务 ASP.NET Web API 的请求。
【问题讨论】:
-
IMO 更紧迫的问题是 Volley,它是一个 Google 库,是使用不推荐使用的代码实现的,从 v23 开始,它实际上已从源代码中排除。使用
useLibrary 'org.apach.http.legacy'标志是在有意删除遗留代码时保留遗留代码的一种解决方法。我希望 Volley 要么彻底检查整个代码以删除 apache 组件,要么声明该库不会进一步开发。目前情况还很模糊。 -
@ItaiHanski:我刚刚自定义了 Google 的 volley(作为我项目中的一个模块)删除 Apache 库。请到我的 GitHub 链接github.com/ngocchung/VolleyNoApache。请注意,它尚未针对所有情况进行全面测试:)
-
凌空替换的另一个高度扩展的选项是github.com/apptik/jus
标签: android apache httpresponse android-volley android-api-levels