Android Http客户端如何选择?

1、是Apache Http Client还是HttpUrlConnection?

众所周知,以上就是常用的两种http client library。Apache Http client包括DefaultHttpClient和AndroidHttpClient两种,Apache Http Client功能强大,API繁多,属于重量级的为Browser服务的库,经过多年的发展,也比较稳定,bug较少。如果用户想利用Apache Http Client定制自己的Http客户端,就比较麻烦。

HttpUrlConnection更底层一些,属于轻量级的,方便用户定制。

在Android 2.2(代号Froyo)之前,HttpUrlConnection存在个bug就是:对可读的InputStrem进行close操作时会对连接池造成严重影响。不过这个问题可以通过以下代码规避:

private void disableConnectionReuseIfNecessary() {
    // HTTP connection reuse which was buggy pre-froyo
    if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {
        System.setProperty("http.keepAlive", "false");
    }
}

2、在Android 2.3.3(代号Gingerbread)以后,HttpUrlConnection默认开启Accept-Encoding: gzip,所以content-length返回是压缩后的数据大小,如果使用getContentLength作为未压缩数据大小会有问题。正常读取应该通过inputStream.read返回值是否为-1来判断。

3、在Android IceCream版本中,HttpUrlConnecttion引入了HttpResponseCache。加速了网络请求并能减少请求数量,节省流量和电量。具体使用请Google之。

综上所述:在Android应用开发中最好使用HttpUrlConnection,因为它轻量、方便定制、再加上HttpResponseCache能减少网络访问,节省电量。不过要记住前边提到的它存在的“坑”。当然,使用Apache Http Client也可以。

转载于:https://my.oschina.net/kingguary/blog/172618

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值