如何在ktor中使用现有的okhttp3拦截器
嘿,我正在 android 和 ios 项目中的 Kotlin Mutliplatorm moblie 工作。当我使用 Retrofit 时,我可以轻松创建拦截器来查看调用:
val httpLoggingInterceptor = HttpLoggingInterceptor()
httpLoggingInterceptor.level = HttpLoggingInterceptor.Level.BASIC
val httpClient = OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.addInterceptor(HeadersInterceptor())
Header Interceptor
import okhttp3.Interceptor
import okhttp3.Response
class HeadersInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val requestBuilder = chain.request().newBuilder()
requestBuilder.addHeader("Client-Version", getClientVersion())
val request = requestBuilder.build()
return chain.proceed(request)
}
private fun getClientVersion(): String {
var versionName = BuildConfig.HEADER_VERSION
return "Android $versionName"
}
}
然后
val retrofit = retrofit2.Retrofit.Builder()
.client(httpClient.build())
Hey I am working in Kotlin Mutliplatorm moblie in android and ios project. When I was using Retrofit, I could easily create interceptors to see the calls:
val httpLoggingInterceptor = HttpLoggingInterceptor()
httpLoggingInterceptor.level = HttpLoggingInterceptor.Level.BASIC
val httpClient = OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.addInterceptor(HeadersInterceptor())
Header Interceptor
import okhttp3.Interceptor
import okhttp3.Response
class HeadersInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val requestBuilder = chain.request().newBuilder()
requestBuilder.addHeader("Client-Version", getClientVersion())
val request = requestBuilder.build()
return chain.proceed(request)
}
private fun getClientVersion(): String {
var versionName = BuildConfig.HEADER_VERSION
return "Android $versionName"
}
}
and then
val retrofit = retrofit2.Retrofit.Builder()
.client(httpClient.build())
Now I am want to switch Ktor. My problem is can I reuse okhttp3 HeadersInterceptor()
in ktor? if yes, So How can I use please give me example. If no please tell me alternative approach because I have so many Interceptor like AuthorizationInterceptor, own implementation of Interceptor. Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只需将您的拦截器添加到 Ktor OkHttp 客户端生成器
Just add your interceptor to Ktor OkHttp client builder