HttpClient过时_使用HttpURLConnection还是HttpClient?
2015-06-16 13:08:50  By: dwtedx

最近把Android的pai更新到了5.1、新建了一个项目、仍然还是使用了以前的HTTP请求方式、当我把以前的代码复制进去之后就发现已经过时了、最后查了一下、原来是Android5.1之后就废止了HttpClient的相关Api、但是对我们使用是没有影响的、但是看上去总不那么美好、后期一定要把它改了


大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据、而Android中主要提供了两种方式来进行HTTP操作、HttpURLConnection和HttpClient、这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能


HttpClient

DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient具体的实现类、它们都拥有众多的API、而且实现比较稳定、bug数量也很少、但同时也由于HttpClient的API数量过多、使得我们很难在不破坏兼容性的情况下对它进行升级和扩展、所以目前Android团队在提升和优化HttpClient方面的工作态度并不积极


HttpURLConnection

HttpURLConnection是一种多用途、轻量极的HTTP客户端、使用它来进行HTTP操作可以适用于大多数的应用程序、虽然HttpURLConnection的API提供的比较简单、但是同时这也使得我们可以更加容易地去使用和扩展它


HTTpURLConnection使用方法

URL url = new URL("http://www.android.com/");
HttpURLConnection urlConnection = 
	(HttpURLConnection) url.openConnection();
try {
 InputStream in = 
	new BufferedInputStream(urlConnection
		.getInputStream());
 readStream(in);
}finally {
 urlConnection.disconnect();
}


哪一种才是最好的?

在Android 2.2版本之前、HttpClient拥有较少的bug、因此使用它是最好的选择、而在Android 2.3版本及以后、HttpURLConnection则是最佳的选择、它的API简单、体积较小、因而非常适用于Android项目、压缩和缓存机制可以有效地减少网络访问的流量、在提升速度和省电方面也起到了较大的作用、对于新的应用程序应该更加偏向于使用HttpURLConnection、因为在以后的工作当中我们也会将更多的时间放在优化HttpURLConnection上面、其实我们也可以使用另外一个框架Volley


关于Volley

我们平时在开发Android应用的时候不可避免地都需要用到网络技术、而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据、Android系统中主要提供了两种方式来进行HTTP通信、HttpURLConnection和HttpClient、几乎在任何项目的代码中我们都能看到这两个类的身影、使用率非常高

不过HttpURLConnection和HttpClient的用法还是稍微有些复杂的、如果不进行适当封装的话、很容易就会写出不少重复代码、于是乎、一些Android网络通信框架也就应运而生、比如说AsyncHttpClient、它把HTTP所有的通信细节全部封装在了内部、我们只需要简单调用几行代码就可以完成通信操作了、再比如Universal-Image-Loader、它使得在界面上显示网络图片的操作变得极度简单、开发者不用关心如何从网络上获取图片、也不用关心开启线程、回收图片资源等细节、Universal-Image-Loader已经把一切都做好了

Android开发团队也是意识到了有必要将HTTP的通信操作再进行简单化、于是在2013年Google I/O大会上推出了一个新的网络通信框架——Volley、Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身

既可以像AsyncHttpClient一样非常简单地进行HTTP通信、也可以像Universal-Image-Loader一样轻松加载网络上的图片、除了简单易用之外、Volley在性能方面也进行了大幅度的调整、它的设计目标就是非常适合去进行数据量不大、但通信频繁的网络操作、而对于大数据量的网络操作、比如说下载文件等、Volley的表现就会非常糟糕

下图所示的这些应用都是属于数据量不大、但网络通信频繁的、因此非常适合使用Volley

Volley主页:https://android.googlesource.com/platform/frameworks/volley


若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

DD记账
top
+