retrofit2.0源码分析
2017-11-12 17:12
204 查看
1.功能
来自官方介绍:A type-safe HTTP client for Android and Java
类型安全的HTTP客户端
2.总体设计
用户层
提供retrofit工作层需要的参数。
已经对返回来的Request交由Http层处理。
提供用户输入,以及返回对应的期待或失败处理。
retrofit工作层
拷贝用户参数,对参数进行处理。
处理完符合Http请求层的request返回给用户层处理。
http处理层
处理实际请求并与底层
socket层沟通。
返回给用户层。
第三方适配层
为
Convert做适配,比如对原始数据(二进制流,或字符串)进行处理,并产生符合用户预期的返回值(比如通过gson转换为对象)。
为
Call做适配,让第三方提供更强大的功能。
3.设计模型
3.1用户层
retrofit概念:
retrofit通过注解声明的java服务接口来生成http请求.。
职责:
通过参数的方式获取
Converter和
CallAdapter两个集合工厂。
通过动态代理的方式,获取用户定义的方法,并使用
serviceMethod的相关方法进行处理。
实例化
Okhttp和
OkhttpCall。
Call
概念:
Call<T>作为一种设计模式,能够直接返回预期的值或失败信息,让异步方法的调用看起来像同步方法一样。
定义的一组与Web服务器逻辑交互的接口,与
retrofit交互发送请求至服务器,以及获取响应。实现轮询和重试失败。具体实现类是
OkhttpCall。
Callback
概念:
Call的回调函数,由用户定义,响应请求的成功或失败。
Response
概念:
作为
Callback的参数提供封装过的http entity请求,以及具体的用户期待的返回类型。
ServiceImpl
概念:
用户定义的一组请求服务接口。
3.2retrofit工作层
ServiceMethod概念:
将
ServiceImpl的注解信息和参数适配成
Call实际需要的请求和响应。
职责:
实例化
ParameterHandler和
ResquestBuilder。
提供
ParameterHandler从
ServiceImpl获取到的相应参数信息。
从
ResquestBuilder获取符合
Call需要的Request。
从
Retrofit获取
Convert和
CallAdapter两个列表,以及其他Http信息。
提供一个
toResponse方法 供
OkhttpCall使用,通过对应的
ConvertAdapter完成对原始服务器传回来的二进制流或字符串转换成对应的对象。
其他
OkhttpCall
概念:
对逻辑定义与服务器交互的
Call进行实现,使用Okhttp。
职责:
使用
ServiceMethod提供的符合Okhttp的request,通过
Okhttp的方法
enqueue与服务器进行交互。
使用
ServiceMethod的
toResponse完成响应的转换。
在
Okhttp的方法
enqueue中导入一个
CallBack支持用户的响应。
ParameterHandler
概念:
对用户提交的参数信息进行处理,并放入
RequestBuilder。
ResquestBuilder
概念:
生成
Okhttp需要的请求信息。
Converter
概念:
对用户提交的参数字符串进行处理,或请求体进行分辨处理(如分辨XML还是JSON)。这里与第三方的响应体共用一个接口。
3.3Http处理层
okhttp概念:
将retrofit提交过来的请求与服务器交互。并作为
OkhttpCall的参数,由其对响应体做封装。
3.4第三方适配层
Converter概念:通过第三方库
GSON或者其他的对响应内容进行处理,输出符合用户预期的对象。
CallAdapter
概念:对
Call<R>进行转换成T,能够享受到第三方库响应式编程等强大的功能。
4.源码设计模式分析
下回分析。相关文章推荐
- Retrofit2.0所以然之源码分析
- Android:这是一份全面 &amp; 详细的Retrofit 2.0 源码分析指南
- Android:这是一份全面 &amp; 详细的Retrofit 2.0 源码分析指南
- Android:这是一份全面 &amp; 详细的Retrofit 2.0 源码分析指南
- Android:这是一份全面 &amp; 详细的Retrofit 2.0 源码分析指南
- Android:这是一份全面 &amp; 详细的Retrofit 2.0 源码分析指南
- Android:这是一份全面 &amp; 详细的Retrofit 2.0 源码分析指南
- Android:这是一份全面 &amp; 详细的Retrofit 2.0 源码分析指南
- Retrofit2.0源码分析
- Retrofit2.0源码分析
- Retrofit 2.0源码分析
- yii2底层源码分析 [ 2.0 版本 ]
- 关于Retrofit2.0源码的学习和理解
- hadoop源码 - HDFS write流程分析(Hadoop2.0)
- Retrofit2源码分析
- android Retrofit简单使用及源码分析
- Android:手把手带你深入剖析 Retrofit 2.0 源码
- retrofit源码分析
- Vuex 2.0 源码分析
- Retrofit源码分析