Android Retrofit添加头信息以及使用HttpLoggingInterceptor

6

我目前正在学习安卓中的Retrofit:

这是我的当前代码:

 HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);


       OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
        @Override
        public okhttp3.Response intercept(Chain chain) throws IOException {

            Request newRequest  = chain.request().newBuilder()
                    .addHeader("Authorization", "Bearer " + Globals.BEARER_TOKEN)
                    .build();
            return chain.proceed(newRequest);
        }
    }).build();

我该如何将我的HttpLoggingInterceptor添加到客户端,并同时将我的标头添加到客户端?

2个回答

7

您可以通过调用方法addInterceptor两次来添加拦截器:

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

OkHttpClient client = new OkHttpClient.Builder()
    .addInterceptor(new Interceptor() {
        @Override
            public okhttp3.Response intercept(Chain chain) throws IOException {
                Request newRequest = chain.request().newBuilder()
                    .addHeader("Authorization", "Bearer " + Globals.BEARER_TOKEN)
                    .build();
                return chain.proceed(newRequest);
            }
        })
   .addInterceptor(interceptor).build();

谢谢,我不知道你可以添加两个拦截器。谢谢! - KikX

0

要向Retrofit添加拦截器,您需要在构建OkHttpClient时将其包含进去。

OkHttpClient client = new OkHttpClient.Builder()
            .addInterceptor(new HttpLoggingInterceptor())

然后你使用这个客户端构建Retrofit,

Retrofit.Builder builder = new Retrofit.Builder()
                .client(client);

Retrofit retrofit = builder.build();

如何添加标题? - KikX
你在代码中做得很正确,将其添加到拦截器中并使用新请求。 - Basil
但是Retrofit只能处理一个客户端吗?我对你的回答感到困惑,为什么不使用我的代码呢? - KikX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接