最近想理一下网络那块,突然发现了Android自带了Httplicent,可是我们平时开发也常用第三方的HttpClient(apache官方的)。由于以前看一些前辈这么用,自己也就跟着用了,但是根本就没考虑这些事。可是最近想整理一下,结果又看到了这个问题。我不知道你们会不会有和我一样的疑问呢?同时apache的东西,为什么Android自带一份,apache自己也有一份呢?并且边个类库是不一样的。
我上网查了一下结果提到的不详细,带着这个问题我就没心情往下整理了。所以一心想弄其来龙去脉,他们哪里不一样。为什么Android上少了那么多的方法类。
开始看Android的文档,没法现什么,只是说在Api22中弃用了它。暂且不说弃用的事。关于HttpClient的没有较多的介绍。所以我就转向apache的官方。查看Apache HttpComponents 里面包含了好几个块。我顺着找找到了HttpComponents Client这一块
这是是介绍apache HttpClient的那块其中这一块中有一部分关于part for Android
点进去,结果什么都清楚了。
上面Background介绍,在谷歌 Android1.0版本的时候,把apache 4.0版本整合进去了。当时4.0也算是一个比较成熟的项目了,Apache官方开始认为Android随着升级会把HttpClient也会升级整合。可是谷歌却没有这么做。所以慢慢的Android就停止维护开发Android里面的HttpClient,而Apache官方的也慢慢的随着维护升级也变成了一个分支。最后Android不维护Android自带的HttpClient并同时拒绝升级apache官方的HttpClient,理由是不兼容。所以Apache
光放就推出了针对Android的HttpClicent。现在是兼容Android里的旧版本Api,防止有冲突。以前可能我们用的时候导入,会发生冲突,到 apache HttpClient 4.3,已经开始兼容Android里的。
以前使用3.X 的commons的版本的用户,apache也强烈建议升级为最新的。
所以,Android api 22中提到的废弃Android HttpClient 我觉得一部分原因也可能是因为这个。Android废弃HttpClient与apache官方提供的HttpClient没有任何关系。我们照样可以继续使用第三方的HttpClient(apache)。