美文网首页
Retrofit源码解读:serviceMethod域赋值&pa

Retrofit源码解读:serviceMethod域赋值&pa

作者: _爱笑的eyes | 来源:发表于2019-06-13 17:04 被阅读0次

要完成ServiceMethod对象的创建还要调用Builder和Build这两个方法来完成这个创建。

先看一下构建者Builder方法: 

首先会对传进来的retrofit和method进行赋值。

然后调用getAnnotations这个方法,是获取网络请求接口方法接口里的一些注释的。

getGenericParameterType是获取网络请求接口里的参数类型。

getParameterAnnotations是获取网络请求接口方法接口里的一些接口内容的。

这三个方法调用完之后才能完成ServiceMethod对象的创建。

看一下build方法:

调用createCallAdapter方法,就是创建网络请求的适配器。它是根据网络请求接口方法当中的返回值和注解类型从Retrofit对象中去获取对应的网络请求适配器的。是根据返回值和注解类型来判断的。

然后会根据前面获取到的网络请求适配器的对象调用responseType方法返回一个网络请求适配器的类型。

然后会判断从Retrofit当中获取该网络适配器返回的数据类型是否是responseType和OkHttp的responseType,如果是的话就会抛出异常。

调用createResponseConverter,就是获取网络请求的数据转换器,就是说他也是根据网络请求接口方法当中的注解类型返回的。

然后会遍历所有方法的注解,调用parseMethodAnnotation方法 ,就是解析网络请求接口中的注解。注解的作用就是获取http请求的方法,包括get,post等等。通过这个方法进行解析。

获取当前方法参数的数量调用lenth方法

最后调用parseParameter方法去解析方法,参数和注解。

这就是serviceMethod创建的一些核心的流程。

总结一下serviceMethod的流程:

1.网络请求适配器工厂集合和内容转换器工厂集合

2.根据方法的标注对ServiceMethod的域进行赋值

3.为每个方法的参数的标注进行解析,获得一个ParameterHandler<?>对象

相关文章

网友评论

      本文标题:Retrofit源码解读:serviceMethod域赋值&pa

      本文链接:https://www.haomeiwen.com/subject/idmsfctx.html