okhttp学习笔记--网络框架封装

来源:互联网 发布:windows应用商店误删 编辑:程序博客网 时间:2024/06/05 23:03

最近公司一个项目的Android端,第一个版本沿用的公司之前的网络框架,在Volley基础上做的简单封装;之后研究了一下okhttp的源码和Retrofit,自己封装了个基于okhttp的简单框架。
简单总结一下自己框架封装过程中的一些收获:
1.网络框架封装一般要包括第三方网络客户端,回调处理,数据解析,工具类封装,此外Retrofit又把网络接口封装成了服务,引入了服务的概念。
2.相对volly,okhttp在实现上(类的定义等)更便于理解http协议,对连接池,SSL,Proxy等有很好的支持,责任链式的请求处理与分层的网络结构很类似,处理逻辑比较清晰,支持Http2.0。
3.对于回调处理,一般的网络请求都是异步的,android界面更新都是在主线程,都要通过Handler处理;Retrofit默认使用MainThreadExcuter,实际上也是使用Handler处理,从外Retrofit采用CallAdapter使得可以介入其他的异步框架如RxJava实现了良好的可扩展性。
4.数据解析,一般的开发项目都会采用Json格式,数据解析采用的第三方库一般有gson,阿里的fastjson等,Retrofit的convertFactory设计又体现了很好的扩展性。
5.工具类是直接面向我们的业务代码的,现在最流行的应该是链式调用型的封装,代码结构清晰,逻辑上易读。
6.注意的一些方:框架的可扩展性,代码模块间的耦合性
7.考虑到新的框架的稳定性,先保持封装框架对volley的支持,在最小代码改动下能够支持volly和okhttp;
同时从代码隔离上考虑,不希望第三方的类深入到逻辑代码中,在封装框架中添加一个中间层作为业务层与第三封框架的隔离层(使用桥接模式),在中间层主要把一些易变量(URL,header,parameter)传递给第三方框架请求,在Retrofit中也可以看到这种处理;
使用范型和fastJson实现数据解析,扩展性还有待改进相较Retrofit这里只需要回调处理类使用范型。
项目中主要使用的请求方式是post,对其他方式没有实现,post对应的三种Json实现unformed,MultiPart,Json参数,okhttp都提供了很好的支持

0 0