HttpUrlConnection,HttpClient,okttp和volley、xUtils Async-http Retrofit,RXJava的认识


HttpClient

有连个实现类,DefaultHttpClient和它的兄弟AndroidHttpClient,提供的api较多,在开发时兼容性不太给力。
HttpClient(android6.0移除了HttpClient)所以个人认为,既然android都不建议用了,还是略过吧



HttpURLConnection


是基于HTTP协议的,其底层通过socket通信实现(socket在在这里不详细说明了,自行百度)
api相对的比较简单,Android 2.2版本之前,有严重的bug, (bug是:使用close方法的时候会影响连接池)

所以建议在android 2.3以后使用HttpUrlConnection,2.3之前使用HttpClient。
从Android4.4开始HttpURLConnection的底层实现采用的是okHttp(所以,基于这两种,应该在看一看okhttp吧)


OkHttp 

是 Square 公司开源的针对 Java 和 Android 程序,封装的一个高性能 http 请求库,所以它的职责跟 HttpUrlConnection 是一样的,支持 spdy、http 2.0、     websocket ,支持同步、异步,而且 OkHttp 又封装了线程池,封装了数据转换,封装了参数使用、错误处理等,api 使用起来更加方便。可以把它理解成是一个封装之后的类似 HttpUrlConnection 的一个东西,但是你在使用的时候仍然需要自己再做一层封装,这样才能像使用一个框架一样更加顺手。


  volley:(框架): 底层:   volley在android2.2以下使用httpClient,2.2以上使用HttpURLConnection
         能使网络通信更快,更简单,更健壮,扩展性更好一点 
        Get,Post网络请求及网络图像的高效率异步处理请求  
        可以对网络请求进行排序优先级管理 
        支持网络请求的缓存 
        多级别取消请求

        使用Volley可以简化一些网络通信的开发。不适合大数据和流媒体的网络请求。例如上百兆文件、视频下载
     
    Async-http(框架) 底层:    使用httpClient
     清晰的网络请求回调 
     请求使用ThreadPool,限制并发资源使用情况 
     GET/POST基于参数构建使用(RequestParams) 
     支持Multipart文件上传,大数据上传下载 
     内置响应解析成JSON 
     持久化cookie存储,保存cookie到你的应用程序的SharedPreferences 
     支持二进制文件(图片等)的下载
 想必你肯定知道6.0之后HttpClient不是系统自带的了,不过它在最近的更新中将HttpClient的所有代码copy了一份进来,所以还能使用。
     
  okttp(框架):
    
    OkHttp 是 Square 公司开源的针对 Java 和 Android 程序,封装的一个高性能 http 请求库,所以它的职责跟 HttpUrlConnection 是一样的,支持 spdy、http 2.0、     websocket ,支持同步、异步,而且 OkHttp 又封装了线程池,封装了数据转换,封装了参数使用、错误处理等,api 使用起来更加方便。可以把它理解成是一个封装之后的类似 HttpUrlConnection 的一个东西,但是你在使用的时候仍然需要自己再做一层封装,这样才能像使用一个框架一样更加顺手。

     •okhttp是高性能的http库,支持同步、异步,而且实现了spdy、http2、websocket协议,api很简洁易用,和volley一样实现了http协议的缓存。
     


Retrofit(框架)底层;基于okhttp:

Square公司还出了一个Retrofit库配合OkHttp战斗力翻倍。(强烈推荐)它是基于okhttp的
Retrofit的跟Volley是一个套路,但解耦的更彻底:比方说通过注解来配置请求参数,通过工厂来生成CallAdapter,Converter,你可以使用不同的请求适配器(CallAdapter), 比方说RxJava,Java8, Guava。你可以使用不同的反序列化工具(Converter),比方说json, protobuff, xml, moshi等等。

(新框架)RxJava:

RxJava 是一个响应式编程框架,采用观察者设计模式。所以自然少不了 Observable 和 Subscriber 这两个东东了。

本人有关于Rxjava详细的使用讲解,http://blog.csdn.net/qq_35681180/article/details/53104233
    

Xutil:

xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...

xUtils最低兼容android 2.2 (api level 8)。 当前xUtils主要有四大模块:

DbUtils模块

android中的orm框架,一行代码就可以进行增删改查;

支持事务,默认关闭;

可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);

支持绑定外键,保存实体时外键关联实体自动保存或更新;

ViewUtils模块

android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;

新的事件绑定方式,使用混淆工具混淆后仍可正常工作;

HttpUtils模块

支持同步,异步方式的请求;

支持大文件上传,上传大文件不会oom;

支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;

BitmapUtils模块

加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;

支持加载网络图片和本地图片;

内存管理使用lru算法,更好的管理bitmap内存;


         
        如果以上网络库你都能熟练掌握,那么优先推荐使用 Retrofit ,前提是最好你们的后台 api 也能遵循 RESTful 的风格,其次如果你不想使用或者没能力掌握 Retrofit ,那么推荐使用 Volley ,毕竟 Volley 你不需要做过多的封装,当然如果你们需要上传大数据,那么不建议使用 Volley,否则你该采用 OkHttp 。 
     最后,可能有些人会纠结 Volley 与 OkHttp 的选择,那是因为我认为 OkHttp 还是需要一定的能力做一层封装的,如果你有能力封装的话那不如直接用 Retrofit 了,如果没能力封装还是乖乖的用 Volley 吧,如果你能有一些不错的基于 OkHttp 封装好的开源库,总之你要根据自己项目的需求来选择使用自己的框架!
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值