retrofit在creat方法中通过动态代理实现接口方法,在这过程中构建了一个serviceMethod,根据方法注解获取请求方式,参数类型和参数注解拼接请求的链接,同时根据这个serviceMethod生生一个OkHttpCall对象,OkHttpCall内部会引用okhttp3.call去处理,这个okhttp3.call是通过serviceMethod获取的okhttp3中的callFactory,也就是okhttp3中的OkHttpClient生成的,最终的网络请求是由OkHttpCall调用OkHttpClient发出的,调用和回调等过程,也就是在OkHttpCall中处理的,在请求过程中,为了使用接口中定义的参数OkHttpCall会通过serviceMethod来生成请求对象,然后再交给OkHttpCall去处理,因为回调发生在OkHttpCall,所以回调数据转换也发生在OkHttpCall中,为了符合接口函数中定义的返回类型,OkHttpCall会调用ServiceMethod来转换Response返回数据对象,最后利用CallAdapter适配器吧okhttpcall对象转为接口要求的call网络请求对象
网友评论