向改造工厂中的所有请求添加 header?

adding a header to all requests in the retrofit factory?

我有这个工厂用于应用程序中的所有传出请求,是否可以在此处(应用程序版本)而不是所有请求添加 header? 我看到的其他例子似乎都对工厂使用了不同的语法,我认为它是一个较旧的语法但我不确定

object RetrofitFactory {

    val makeRetrofitService: RetrofitService by lazy {
        val interceptor = HttpLoggingInterceptor()
        interceptor.level = HttpLoggingInterceptor.Level.BODY
        val client = OkHttpClient.Builder()
            .addInterceptor(interceptor)
            .build()

        Retrofit.Builder()
            .baseUrl("${CustomURI.BaseWebsite}/")
            .addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))
            .client(client)
            .build().create(RetrofitService::class.java)
    }

}

我找到了这个解决方案,您可以使用拦截器添加它

在此linkHow to define a Header to all request using Retrofit?

RequestInterceptor requestInterceptor = new RequestInterceptor() {
  @Override
  public void intercept(RequestFacade request) {
    request.addHeader("User-Agent", "Retrofit-Sample-App");
  }
};

RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.setRequestInterceptor(requestInterceptor)
.build();

您可以向您的 OkHttpClient 添加多个拦截器。 它应该是这样的: 这是您的日志记录拦截器:

    val interceptor = HttpLoggingInterceptor()
    interceptor.level = HttpLoggingInterceptor.Level.BODY

这是一个header一个

OkHttpClient.Builder().apply {
        addInterceptor { chain ->
            val request = chain.request()
            val builder = request
                .newBuilder()
                .header("SOME", "SOME")
                .method(request.method(), request.body())
            val mutatedRequest = builder.build()
            val response = chain.proceed(mutatedRequest)
            response
        }
        addInterceptor(interceptor) // this is your http logging
    }.build()

用您喜欢的值更改 SOME 和 SOME。