转-Android联网 — HttpURLConnection和HttpClient选择哪个好?
http://www.ituring.com.cn/article/199619?utm_source=tuicool
在Android开发中,访问网络我们是选择HttpURLConnection还是HttpClient好呢?这两种网络协议又有什么区别呢?下面我们就一起来look look。
1、HttpClient
HttpClient拥有DefaultHttpClient和AndroidHttpClient两个具体的实现类,它们都有众多的API,而且实现比较稳定,bug数量也很少。
但也正是因为HttpClient的API数量过多,使得我们很难在不破坏兼容性的情况下对它进行升级和扩展,所以目前Android开发团队在提升和优化HttpClient方面的工作态度并不积极。
2、HttpURLConnection
HttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。
不过在Android 2.2版本之前,HttpURLConnection一直存在着一些令人厌烦的bug。比如说对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效了。那么我们通常的解决办法就是直接禁用掉连接池的功能:
代码:
private void disableConnectionReuseIfNecessary() {
// 这是一个2.2版本之前的bug
if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {
System.setProperty("http.keepAlive", "false");
}
}
3、到底哪一种才是最好的?
不同版本,最佳选择肯定有所不同,在Android 2.2版本之前,HttpClient拥有较少的bug,因此使用它是最好的选择。
而在Android 2.3版本及以后,HttpURLConnection则是最佳的选择。它的API简单,体积较小,因而非常适用于Android项目。压缩和缓存机制可以有效地减少网络访问的流量,在提升速度和省电方面也起到了较大的作用。对于新的应用程序应该更加偏向于使用HttpURLConnection,因为在以后的工作当中我们也会将更多的时间放在优化HttpURLConnection上面。
因此大家在开发Android应用的时候,要看自己是开发给什么Android版本的用户使用的,如果目标客户是Android 2.2版本及以下,则选用HttpClient,如果目标客户是Android 2.3版本及以上,则选择HttpURLConnection。但是现在软件更新换代这么快,相信绝大部分的Android应用目标客户群都是Android 2.3版本及以上,所以当下来说,HttpURLConnection应该是更受亲睐的选择。
转-Android联网 — HttpURLConnection和HttpClient选择哪个好?的更多相关文章
- 论述Android通过HttpURLConnection与HttpClient联网代理网关设置
Android联网主要使用HttpURLConneciton和HttpClient进行联网,在手机联网的时候,我们优先选择wifi网络,其次在选择移动网络,这里所述移动网络主要指cmwap. 大家都知 ...
- Android 中HttpURLConnection与HttpClient的简单使用
1:HttpHelper.java public class HttpHelper { //1:标准的Java接口 public static String getStringFromNet1(Str ...
- Android 网络编程之---HttpClient 与 HttpURLConnection 共用cookie
HttpClient 与 HttpURLConnection 共用 SessionId HttpClient 与 HttpUrlConnection 是Android 中HTTP操作最常见的訪问方式. ...
- Android HttpURLConnection And HttpClient
Google的工程师的一个博客写到: HttpURLConnection和HttpClient Volley HTTP请求时:在Android 2.3及以上版本,使用的是HttpURLConnecti ...
- [转]Android访问网络,使用HttpURLConnection还是HttpClient
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12452307 最近在研究Volley框架的源码,发现它在HTTP请求的使用上比较有 ...
- Android HTTP请求用HttpUrlConnection与HttpClient比较
在安卓和JAVA应用开发中需要访问网络,少不了要提交HTTP请求,而基本上目前有两个实现方式:HttpUrlConnection(即URL.openConnection)和HttpClient. 网上 ...
- android 中的Http请求类HttpUrlConnection和HttpClient类
Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient. 如何选择这两个类的使用:android-developers.blogspot.com/2011 ...
- Android访问网络,使用HttpURLConnection还是HttpClient?
本文转自:http://blog.csdn.net/guolin_blog/article/details/12452307,感谢这位网友的分享,谢谢. 最近在研究Volley框架的源码,发现它在HT ...
- Android訪问网络,使用HttpURLConnection还是HttpClient?
原文地址:http://android-developers.blogspot.com/2011/09/androids-http-clients.html 大多数的Android应用程序都会使用HT ...
随机推荐
- 被IP代理网站屏蔽了,真是跪了
被IP代理网站http://www.xicidaili.com/nn/屏蔽了,真是跪了 T T
- 【转】NSString属性什么时候用copy,什么时候用strong?
原文网址:http://www.cocoachina.com/ios/20150512/11805.html 我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境) ...
- Python-requests之POST Data的json问题
代码如下: import json import requests r = requests.post(url, data = {"a": json.dumps({"b& ...
- mvn使用问题
http://mirrors.ibiblio.org/maven2/org/apache/maven/archetypes/ http://blog.csdn.net/u011340807/artic ...
- wikioi 1205 单词倒排
/*====================================================================== 1205 单词翻转 题目描述 Description ...
- 解决outlook不能显示鼠标问题
今天发现打开outlook2010后, 没有鼠标显示. 解决方案: Control Panel -> Mouse Settings ->Pointer Options Uncheck th ...
- css之opacity
设置div元素的不透明级别 语法: value :从0.0(完全透明)到1.0(完全不透明) inherit:应该从父元素继承opacity属性 z-index 属性设置元素的堆叠顺序,仅能在定位元素 ...
- ScrumMaster需要了解的7件事
当一个组织开始使用Scrum时,被选为担任Scrumaster角色的人通常来自于那些有管理背景的人.组织期望那些管理人员,所谓的“大师”,能够交付Scrum项目因为她有管理的专门知识——并且可以同时管 ...
- sqlserver修改某列为行号
UPDATE t_users SET t_users.id=u.num1 FROM t_users INNER JOIN (SELECT row_number() over(order by id) ...
- Oracle 11g R2 常用配置与日志的文件位置
假设.bash_profile中oracle相关环境变量如下: $ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 $ORACLE_BASE=/u01/a ...