使用当前代码向 Kotlin okHttp retrofit2 中的每个请求添加自定义 headers
Adding custom headers to every request in Kotlin okHttp retrofit2 using the current code
我试图通过将 .addHeader() 添加到 OkHttpClient.Builder() 来向每个请求添加自定义 headers,但在构建时出现以下错误:
MicroApiClient.kt: (16, 14): Unresolved reference: addHeader
如何使用以下代码向每个请求正确添加自定义 headers?
package com.app.name.data
import com.app.name.BuildConfig
import com.app.name.data.source.remote.APPService
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.converter.scalars.ScalarsConverterFactory
object MicroApiClient {
private val loggingInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
private val okHttpClient = OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
// Attempting to add headers to every request
.addHeader("x-api-key", BuildConfig.AWS_MICROSERVICES_API_KEY)
.build()
val instance: APPService by lazy {
val retrofit = Retrofit.Builder()
.baseUrl(BuildConfig.AWS_MICROSERVICES_HOST)
.addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
.client(okHttpClient)
.build()
retrofit.create(APPService::class.java)
}
}
根据 Retrofit 文档:
Interceptors can add, remove, or replace request headers.
拦截器用于处理传出请求或传入响应。在您的情况下,您必须将 API_KEY 添加到每个请求中作为 header。这就是拦截器可以派上用场的地方。您可以在拦截器中添加 header,如下所示:
private val okHttpClient = OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
// Attempting to add headers to every request
.addInterceptor { chain ->
val request = chain.request().newBuilder()
.addHeader("x-api-key", BuildConfig.AWS_MICROSERVICES_API_KEY)
chain.proceed(request.build())
}
.build()
我试图通过将 .addHeader() 添加到 OkHttpClient.Builder() 来向每个请求添加自定义 headers,但在构建时出现以下错误:
MicroApiClient.kt: (16, 14): Unresolved reference: addHeader
如何使用以下代码向每个请求正确添加自定义 headers?
package com.app.name.data
import com.app.name.BuildConfig
import com.app.name.data.source.remote.APPService
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.converter.scalars.ScalarsConverterFactory
object MicroApiClient {
private val loggingInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
private val okHttpClient = OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
// Attempting to add headers to every request
.addHeader("x-api-key", BuildConfig.AWS_MICROSERVICES_API_KEY)
.build()
val instance: APPService by lazy {
val retrofit = Retrofit.Builder()
.baseUrl(BuildConfig.AWS_MICROSERVICES_HOST)
.addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
.client(okHttpClient)
.build()
retrofit.create(APPService::class.java)
}
}
根据 Retrofit 文档:
Interceptors can add, remove, or replace request headers.
拦截器用于处理传出请求或传入响应。在您的情况下,您必须将 API_KEY 添加到每个请求中作为 header。这就是拦截器可以派上用场的地方。您可以在拦截器中添加 header,如下所示:
private val okHttpClient = OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
// Attempting to add headers to every request
.addInterceptor { chain ->
val request = chain.request().newBuilder()
.addHeader("x-api-key", BuildConfig.AWS_MICROSERVICES_API_KEY)
chain.proceed(request.build())
}
.build()