Java 如何使用Reformation2和Koin2.0更改基本URL
我有一个返回服务器列表的查询,用户可以选择他需要的服务器 谷歌搜索没有帮助,几乎没有结果 告诉我如何使用Koin和改进实时实现基本URL欺骗 我的模块:Java 如何使用Reformation2和Koin2.0更改基本URL,java,android,kotlin,retrofit,koin,Java,Android,Kotlin,Retrofit,Koin,我有一个返回服务器列表的查询,用户可以选择他需要的服务器 谷歌搜索没有帮助,几乎没有结果 告诉我如何使用Koin和改进实时实现基本URL欺骗 我的模块: fun createMainModule(context: Context) = module { single(named(APP_CONTEXT)) { context } single(named(RESOURCES)) { context.resources } single(named(REPOSITOR
fun createMainModule(context: Context) = module {
single(named(APP_CONTEXT)) { context }
single(named(RESOURCES)) { context.resources }
single(named(REPOSITORY)) {
Repository(get(named(RETROFIT)))
}
}
fun createNetworkModule(baseUrl: String) = module(override = true) {
single(named(TOKEN_INTERCEPTOR)) { createTokenInterceptor(get(named(DATA_PROVIDER))) }
single(named(OK_HTTP)) { createOkHttpClient(get(named(TOKEN_INTERCEPTOR))) }
single(named(GSON)) { createGson() }
single(named(RETROFIT)) {
createRetrofit(
get(named(RESOURCES)),
get(named(LOG_OUT_SUBJECT)),
get(named(GSON)),
baseUrl,
get(named(OK_HTTP))
)
}
我用comment@sonnet解决了我的问题 此代码:
class ChangeableBaseUrlInterceptor : Interceptor {
@Volatile
private var host: HttpUrl? = null
fun setHost(host: String) {
this.host = host.toHttpUrlOrNull()
}
fun clear() {
host = null
}
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): okhttp3.Response {
var request = chain.request()
host?.let {
val newUrl = request.url.newBuilder()
.scheme(it.scheme)
.host(it.toUrl().toURI().host)
.port(it.port)
.build()
request = request.newBuilder().url(newUrl).build()
}
return chain.proceed(request)
}
}
我用comment@sonnet解决了我的问题 此代码:
class ChangeableBaseUrlInterceptor : Interceptor {
@Volatile
private var host: HttpUrl? = null
fun setHost(host: String) {
this.host = host.toHttpUrlOrNull()
}
fun clear() {
host = null
}
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): okhttp3.Response {
var request = chain.request()
host?.let {
val newUrl = request.url.newBuilder()
.scheme(it.scheme)
.host(it.toUrl().toURI().host)
.port(it.port)
.build()
request = request.newBuilder().url(newUrl).build()
}
return chain.proceed(request)
}
}
最好的做法是编写一个okhttp拦截器,并为每个请求更新base_url。这就是我所做的,也可能是调查这件事的复制品:匕首2它不是Koin@sonnet嗯,一个好的选择最好的办法是编写一个okhttp拦截器,并为每个请求更新基本url。这就是我所做的,也可能是调查这件事的复制品:匕首2它不是Koin@sonnet嗯,一个不错的选择