Adding header to all request with Retrofit 2

前端 未结 10 1422
北荒
北荒 2020-11-29 17:46

Retrofit 2\'s documentation says:

Headers that need to be added to every request can be specified using an OkHttp interceptor.

I

10条回答
  •  半阙折子戏
    2020-11-29 18:01

    The Latest Retrofit Version HERE -> 2.1.0.

    lambda version:

      builder.addInterceptor(chain -> {
        Request request = chain.request().newBuilder().addHeader("key", "value").build();
        return chain.proceed(request);
      });
    

    ugly long version:

      builder.addInterceptor(new Interceptor() {
        @Override public Response intercept(Chain chain) throws IOException {
          Request request = chain.request().newBuilder().addHeader("key", "value").build();
          return chain.proceed(request);
        }
      });
    

    full version:

    class Factory {
    
    public static APIService create(Context context) {
    
      OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
      builder.readTimeout(10, TimeUnit.SECONDS);
      builder.connectTimeout(5, TimeUnit.SECONDS);
    
      if (BuildConfig.DEBUG) {
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
        builder.addInterceptor(interceptor);
      }
    
      builder.addInterceptor(chain -> {
        Request request = chain.request().newBuilder().addHeader("key", "value").build();
        return chain.proceed(request);
      });
    
      builder.addInterceptor(new UnauthorisedInterceptor(context));
      OkHttpClient client = builder.build();
    
      Retrofit retrofit =
          new Retrofit.Builder().baseUrl(APIService.ENDPOINT).client(client).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();
    
      return retrofit.create(APIService.class);
      }
    }
    

    gradle file (you need to add the logging interceptor if you plan to use it):

      //----- Retrofit
      compile 'com.squareup.retrofit2:retrofit:2.1.0'
      compile "com.squareup.retrofit2:converter-gson:2.1.0"
      compile "com.squareup.retrofit2:adapter-rxjava:2.1.0"
      compile 'com.squareup.okhttp3:logging-interceptor:3.4.0'
    

提交回复
热议问题