retrofit2源码及请求流程分析
1.创建Retrofit对象
val retrofit = Retrofit.Builder()
.baseUrl(SimpleService.API_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
2.创建Service接口
val github = retrofit.create(GitHub::class.java)
retrofit.create方法为Service创建动态代理,可以说是Retrofit的核心。
3.创建调用API的Call对象
val call = github.contributors("square", "retrofit")
1.当调用Service中定义的方法时,会调用retrofit.create创建的动态代理,调用Proxy.newProxyInstance中InvocationHandler的invoke方法,创建流程如下:

4.发起网络请求
val contributors = call.execute().body()!!
请求网络的流程如下:

异步请求和同步类似,这里就不分析了。