Android 包含了两种 HTTP Client:HttpURLConnection 和 Apache HTTP Client。两者都支持 HTTPS,流上传和下载,访问超时设置,IPV6 和连接池。
Apache HTTP Client
DefaultHttpClient 和他的姊妹 AndroidHttpClient 都从 HTTP Client 继承而来。它们有大量、灵活的 API,实现也稳定,bug 少。
但是大量的 API 也使得 Android 团队在不破坏兼容性的情况下对其改进比较困难。所以 Android 团队现在对其的维护比较少了。
HttpURLConnection
HttpURLConnection 是一个通用的、轻量化的 HTTP Client。刚开始其实现过于简单,但是也比较容易稳固地改进。
Froyo(2.2)之前,HttpURLConnection 有一些令人沮丧的 bug。
Android 6.0 移出了对 Apache HTTP Client 的支持。如果你的 App 的 target API 高于等于 Android 2.3(API 9),应该使用 HttpURLConnection。HttpURLConnection 的性能更好,因为它通过自动压缩和响应缓存减少了网络请求,还减少电量消耗。如果你依然坚持时候用 Apache HTTP API 的话,你一定要在build.gradle
中声明:
android { useLibrary 'org.apache.http.legacy'}
即使加入这句话以后,也有可能出现如下编译错误:
" Unable to find optional library: org.apache.http.legacy"
解决办法:
1、看看目录E:\software\Android\sdk\platforms\android-23\optional 下有没有org.apache.http.legacy.jar 和 optional.json
2、如果没有optional.json,则自己新建一个这样的文件,然后加入如下内容:
[
{
"name": "org.apache.http.legacy",
"jar": "org.apache.http.legacy.jar",
"manifest": false
}
]
本文是在以下文章中整合的:
网友评论