本质
对 OkHttp 的封装。
实现方式:动态代理
核心:ConverterFactory,CallAdapterFactory
引入:
const val retrofit = "com.squareup.retrofit2:retrofit:$retrofitVersion"
CallAdapterFactory
常用的有 RxJava2CallAdapterFactory,RxJava3CallAdapterFactory
const val adapterRxjava2 = "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
const val adapterRxjava3 = "com.squareup.retrofit2:adapter-rxjava3:$retrofitVersion"
ConverterFactory
常用的有 GsonConverterFactory,MoshiConverterFactory,ProtoConverterFactory
const val converterGson = "com.squareup.retrofit2:converter-gson:$retrofitVersion"
const val converterMoshi = "com.squareup.retrofit2:converter-moshi:$retrofitVersion"
const val converterProtobuf = "com.squareup.retrofit2:converter-protobuf:$retrofitVersion"
Retrofit
create(final Class service)
- 如果是 Object 的方法,如
toString()
等,则不代理 - 如果是默认方法(Java 8 Interface 支持 default method),则调用默认方法;否则走代理
OkHttpCall
createRawCall()
构建 OkHttp Call,此处的 callFactory 其实就是 OkHttpClient