• 【转载】 HttpClient、HttpURLConnection、OKHttp和Volley优缺点和性能对比


    声明【转载】原文地址https://blog.csdn.net/langtop/article/details/77972855    如有侵权,请联系删除。


    现在常用的网络请求方式主要有:HttpClient、HttpURLConnection、OKHttp和Volley。

    一、HttpClient:
    HttpClient 是Apache的一个三方网络框架,网络请求做了完善的封装,api众多,用起来比较方便,开发快。实现比较稳定,bug比较少,但是正式由于其api众多,是我们很难再不破坏兼容性的情况下对其进行扩展。所以,Android团队对提升和优化httpclient积极性并不高。android5.0被废弃,6.0逐渐删除。
    二、HttpURLConnection
    HttpURLConnection是一个多用途、轻量级的http客户端。它对网络请求的封装没有HttpClient彻底,api比较简单,用起来没有那么方便。但是正是由于此,使得我们能更容易的扩展和优化的HttpURLConnection。不过,再android2.2之前一直存在着一些令人烦的bug,比如一个人可读的inputstream调用它的close方法的时候,会使得连接池实效,通常的做法就是禁用连接池。因此,在android2.2之前建议使用稳定的HttpClient,android2.2之后使用更容易扩展和优化的HttpURLConnection。
    三、okhttp
    支持Android 2.3及其以上版本;
    支持Java JDK 1.7以上版本;

    okhttp是专注于提升网络连接效率的http客户端。
    1、它能实现同一ip和端口的请求重用一个socket,这种方式能大大降低网络连接的时间,和每次请求都建立socket,再断开socket的方式相比,降低了服务器服务器的压力。
    2、okhttp 对http和https都有良好的支持。
    3、okhttp 不用担心android版本变换的困扰。
    4、成熟的网络请求解决方案,比HttpURLConnection更好用。
    4、缺点,okhttp请求网络切换回来是在线程里面的,不是在主线程,不能直接刷新UI,需要我们手动处理。封装比较麻烦。

    四、Volley
    Volley是google在2013 io大会上推出的网络通信框架,特别适合处理数据量小,通信频繁的网络操作。优点是内部封装了异步线程,可直接在主线程请求网络,并处理返回的结果。同时可以取消请求,容易扩展。缺点是:面对大数据量的请求,比如下载表现糟糕,不支持https。Volley的底层在针对android2.3以下系统使用httpclicent,在android2.3以上采用HttpUrlConnection请求网络。

    本公司的选择:
    公司使用Volley框架来处理网络请求,但是,当数据量需求越来大的时候,Volley在面对大数据量的网络请求的表现并不好,加上公司大量采用https协议。于是,公司网络请求采用了Volley+okhttp。正如我们采用这种方式的优势有:
    1、okhttp 不用担心android版本变换的困扰。
    2、okhttp 对大数据量的网络请求支持非常好。
    3、okhttp 同时支持http和https
    4、okhttp 重用socket连接,网络请求效率非常高。
    5、Volley框架在异步请求的封装非常好,对子线程网络请求,主线程更新UI支持非常好。能像Image-Loader一样轻松加载网络图片。
    总之,网络请求底层采用okhttp,异步回调使用Volley框架。

    后续还有对xutils 和 Retrofit2的分析。
    ---------------------
    作者:heqinglin8
    来源:CSDN
    原文:https://blog.csdn.net/langtop/article/details/77972855
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    jQuery实现DropDownList(MVC)
    解决MVC应用程序数据重复加载问题
    MVC应用程序使用jQuery接收Url的参数
    openstack上创建vm实例后,状态为ERROR问题解决
    分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口
    LInux下设置账号有效时间 以及 修改用户名(同时修改用户组名和家目录)
    Rsync+Inotify实时同步环境部署记录
    Shell+Curl监控网站页面访问状态,利用SendEmail发邮件通知
    Shell脚本字符串匹配及日常命令工具
    分布式监控系统Zabbix-3.0.3-完整安装记录(6)-微信报警部署
  • 原文地址:https://www.cnblogs.com/annawong/p/11249028.html
Copyright © 2020-2023  润新知