要完成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<?>对象









网友评论