我已经按照MVVM 和 Retrofit2 的这个教程使用了 Kodein 结构/框架。我想知道,使用相同的框架/结构,我如何在单个应用程序中拥有多个基本 URL。
下面是“MyApi”接口的代码,其中有一个拦截器类作为参数。
companion object {
operator fun invoke(
networkConnectionInterceptor: NetworkConnectionInterceptor
): MyApi {
val okkHttpclient = OkHttpClient.Builder()
.addInterceptor(networkConnectionInterceptor)
.readTimeout(20, TimeUnit.SECONDS)
.build()
return Retrofit.Builder()
.client(okkHttpclient)
.baseUrl("http://my-base-url")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(MyApi::class.java)
}
}
以下是 Iam 在 Application 类中初始化 MyApi 接口的方式:
bind() from singleton { PreferenceProvider(instance()) }
bind() from singleton { NetworkConnectionInterceptor(instance(), instance()) }
bind() from singleton { MyApi(instance()) }
这里 MyApi 中的 instance() 显然是 NetworkConnectionInterceptor。
我在 stackoverflow 和 medium 上看到了很多例子,但我没有得到任何帮助。