HTTP请求客户端

4 篇文章 0 订阅

Http请求的客户端(在java里)目前有两种,java.net.HttpURLConnection和org.apache.http.client.HttpClient。


java.net.HttpURLConnection

这是java自带的http请求工具类。

HttpURLConnectionAPI提供的比较简单,更加容易地去使用和扩展它,但是在2.2以前存在bug,所以一般在2.3及以上版本


org.apache.http.client.HttpClient

HttpClient实现比较稳定,bug数量也很少,但是API数量过多,很难在不破坏兼容性的情况下对它进行升级和扩展;

在最新的Android 5.1.0版本中,HttpClient相关的API已经被deprecated了;

http://blog.csdn.net/hengyunabc/article/details/22716911



https://github.com/android-cn/android-discuss/issues/56

1 HttpclientSessionCookie处理的比较好,不想HttpUrlConnection还要setCookiesetSession
HttpClient上传文件非常方便,HttpUrlConnection需要拼装传输文件的协议(写起来比较繁琐);

2 HttpUrlConnection支持Gzip压缩,HttpClient虽然支持,但是要代码去处理;
HttpUrlConnectionGzip在传输大文件分包trunk有问题,只适合小文件,但是bug现在已经修复。

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

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

HttpClient
功能更强,BUG更少,更容易控制细节

1.HttpClientapache的开源实现,而HttpUrlConnection是安卓标准实现,安卓SDK虽然集成了HttpClient,但官方支持的却是HttpUrlConnection
2.HttpUrlConnection
直接支持GZIP压缩;HttpClient也支持,但要自己写代码处理;我们之前测试HttpUrlConnectionGZIP压缩在传大文件分包trunk时有问题,只适合小文件,不过这个BUG后来官方说已经修复了;
3.HttpUrlConnection
直接支持系统级连接池,即打开的连接不会直接关闭,在一段时间内所有程序可共用;HttpClient当然也能做到,但毕竟不如官方直接系统底层支持好;
4.HttpUrlConnection
直接在系统层面做了缓存策略处理,加快重复请求的速度。


参考文献:

https://github.com/giantray/stackoverflow-java-top-qa/blob/master/contents/using-java-net-urlconnection-to-fire-and-handle-http-requests.md


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值