关于安卓HTTP请求用HttpUrlConnection还是HttpClient好

如题所述

  安卓和JAVA应用开发少不了要提交HTTP请求,而基本上目前有两个实现方式:HttpUrlConnection(即URL.openConnection)和HttpClient。

  网上不少人都认为HttpClient更好,理由是功能更强,BUG更少,更容易控制细节。但我个人认为普通JAVA人员可选用HttpClient,安卓开发人员则应该使用HttpUrlConnection,理由如下:

  1.HttpClient是apache的开源实现,而HttpUrlConnection是安卓标准实现,安卓SDK虽然集成了HttpClient,但官方支持的却是HttpUrlConnection;

  2.HttpUrlConnection直接支持GZIP压缩;HttpClient也支持,但要自己写代码处理;我们之前测试HttpUrlConnection的GZIP压缩在传大文件分包trunk时有问题,只适合小文件,不过这个BUG后来官方说已经修复了;

  3.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭,在一段时间内所有程序可共用;HttpClient当然也能做到,但毕竟不如官方直接系统底层支持好;

  4.HttpUrlConnection直接在系统层面做了缓存策略处理,加快重复请求的速度。

  一年多前我在开始搞安卓开发时,就自己写了一个小程序,测试HttpUrlConnection和HttpClient两种连接方式的连接读取速度,分别访问百度和CSDN的首页。选择这两网站因为一个是较少数据,另一个是较大数据。当前用的是i9000手机,安卓2.2的系统,移动EDGE网络,APN为CMNET,程序启动一个服务每隔半分钟执行一次测试,包括连接速度和读取速度,然后将日志以CSV格式保存分析,结果非常意外,HttpUrlConnection读取CSDN比HttpClient快了几倍,具体数字已经不记得了。当然了,现在网络系统环境都不一样了,本想现在再拿来跑一下,不过时代久远,这个程序已经没了;刚才在硬盘上找了一下,程序和代码没找着,只好算了。后来分析,本来两者相差不应该有这么大,估计是GZIP压缩的功劳,但连接速度上HttpUrlConnection也是要略快一点的。
  总之,在安卓开发上,虽然HttpClient更好地支持很多细节的控制(如代理、COOKIE、鉴权、压缩、连接池),但相应地对开发人员要求更高,代码写起来更复杂,普通开发人员很难做到对它很好地驾驭,官方的支持也越来越少;而HttpUrlConnection对大部分工作进行了包装,屏蔽了不需要的细节,更适合开发人员直接调用,而且官方对它的支持和优化也会越来越好。我们既然是做安卓应用的开发,自然要遵循安卓官方的指引,选用HttpUrlConnection。
转载
温馨提示:内容为网友见解,仅供参考
无其他回答

关于安卓HTTP请求用HttpUrlConnection还是HttpClient好
网上不少人都认为HttpClient更好,理由是功能更强,BUG更少,更容易控制细节。但我个人认为普通JAVA人员可选用HttpClient,安卓开发人员则应该使用HttpUrlConnection,理由如下:1.HttpClient是apache的开源实现,而HttpUrlConnection是安卓标准实现,安卓SDK虽然集成了HttpClient,但官方支持的却是HttpUrlConnection;...

关于安卓HTTP请求用HttpUrlConnection还是HttpClient好
大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作,HttpURLConnection和HttpClient。这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能。1、HttpClient DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient...

HttpClient和HttpURLConnection的区别
HttpURLConnection: HttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。 不过在Android 2.2版本之前,HttpURLConnection一直存在着一些令人厌烦的bug。比如说对一个可读的Inpu...

httpurlconnection 和 httpclient 用哪个
HttpClient是个很不错的开源框架,封装了访问http的请求头,参数,内容体,响应等等,HttpURLConnection是java的标准类,什么都没封装,用起来太原始,不方便,比如重访问的自定义,以及一些高级功能等。3.案例 HttpURLConnection String urlAddress = "http:\/\/192.168.1.102:8080\/AndroidServer\/login.do...

HttpClient和HttpURLConnection的区别
•HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭,在一段时间内所有程序可共用;HttpClient当然也能做到,但毕竟不如官方直接系统底层支持好。•HttpUrlConnection直接在系统层面做了缓存策略处理(4.0版本以上),加快了重复请求的速度。从发展的眼光来看HttpUrlConnection比较有...

HttpClient和HttpURLConnection的区别
HttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。但是早期的版本BUG比较多,最新比较方便扩展。早期为了更好地处理向Web站点请求,包括处理Session、Cookie等...

Android网络请求,全方位优雅解析
1. 输入与解析:当用户在Android设备的浏览器中输入网址,浏览器会智能匹配可能的URL,提供历史记录或书签建议。Chrome的浏览器甚至会在缓存中快速预览页面,还未按下回车,页面可能已显示。2. 域名查找:在Android中,HttpURLconnection是常用的网络接口。在API23及以上版本,虽然HttpClient被移除,但推荐...

android 怎么调用dylib
个人建议使用http协议,android自带的httpUrlConnection和httpClient可以很好的进行http交互! 不太建议使用webService android连接webService目前常见的是一个ksoap2的插件!这个如果多次连续访问WebService会出现连接失败的问题!个人的一点建议!

使用onvif时为什么http的url不行
总结了网上的一些资源,主要有以下两个观点: 分析一: 在研究Volley框架的源码中,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient。

怎么用http协议实现安卓数据
首先,需要明确一下http通信流程,Android目前提供两种http通信方式,HttpURLConnection和HttpClient,HttpURLConnection多用于发送或接收流式数据,因此比较适合上传\/下载文件,HttpClient相对来讲更大更全能,但是速度相对也要慢一点。在此只介绍HttpClient的通信流程:1.创建HttpClient对象,改对象可以用来多次发送不同的http请求2....

相似回答