首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用当前代码向Kotlin okHttp retrofit2中的每个请求添加自定义标头

使用当前代码向Kotlin okHttp retrofit2中的每个请求添加自定义标头
EN

Stack Overflow用户
提问于 2021-08-13 14:47:52
回答 1查看 1K关注 0票数 1

我试图通过将.addHeader()添加到OkHttpClient.Builder()来向每个请求添加自定义头,但在构建时我得到了以下错误:

MicroApiClient.kt:(16,14):未解决的引用: addHeader

如何使用下面的代码正确地向每个请求添加自定义标头?

代码语言:javascript
复制
    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)
        }
    }
EN

Stack Overflow用户

回答已采纳

发布于 2021-08-13 14:55:03

根据Retrofit文档:

拦截器可以添加、删除或替换请求头。

拦截器用于操作传出请求或传入响应。在您的示例中,您必须将API_KEY作为头添加到每个请求中。拦截器就是在那里方便的。您可以在拦截器中添加标题,如下所示:

代码语言:javascript
复制
 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()
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68774318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档