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
Just add your interceptor to Ktor OkHttp client builder
val client: HttpClient = HttpClient(OkHttp) {
engine {
config {
addInterceptor( YourInterceptor() )
}
}
}