Retrofit-v2.9.0工作流程
2020-07-30 11:56:58 0 举报
Retrofit源码流程
作者其他创作
大纲/内容
Platform类主要是对编译器、android版本的判断以及初始化线程池、初始化转换器、初始化适配器;并且过滤非自定义的接口类方法
调用ServiceMethod类parseAnnotations方法,通过RequestFactory类处理请求接口的参数、注解@:包括请求url、请求体、请求头 、请求放式、执行请求装换器(Converter)的requestBodyConverter方法、初始化与okhttp3连接调用请求,具体通过ParameterHandler类缓存; 以及通过HttpServiceMethod类来设置装换器 、设置适配器、设置okhttp拦截器等
通过动态代理执行到具体的网络请求接口,最终进入ServiceMethod类,每一个接口方法对应一个ServiceMethod类,采用集合缓存,高版本库中此类不是最终实现处理类
调用ServiceMethod类invoke方法,初始化OkHttpCall类,通过调用适配器(CallAdapter)的adapt方法来具体调用OkHttpCall类的网络请求,如enqueue方法(可手动调用也可默认调用,在Android版本24+以上没有自定义适配器下将自动调用)
Retrofit.java为入口类,入口方法为create,里面通过动态代理实现
Retrofit工作流程(底层实际采用okhttp来网络请求)
通过Builder设置基URL、转换器(Converter)、网络响应设配器(CallAdapter)、线程池
通过执行到OkHttpCall类的enqueue方法,初始化到RequestBuilder类,此类为okhttp请求参数设置类(包括拼接url、设置请求头、设置请求体等,参数字段来自ParameterHandler缓存类),最后调用到okhttp3.Call的enqueue执行到真正的网络请求,此时网络响应成功则调用到转换器的convert方法(可在这个方法里做初始解析操作)
0 条评论
下一页