如何在服务生成器类的改造中添加 http 拦截器 [英] How to add http interceptor in retrofit in a service generator class

查看:40
本文介绍了如何在服务生成器类的改造中添加 http 拦截器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个单独的服务生成器类,如本指南所示 https://futurestud.io/tutorials/retrofit-2-manage-request-headers-in-okhttp-interceptor

I created a separate service generator class as shown is this guide https://futurestud.io/tutorials/retrofit-2-manage-request-headers-in-okhttp-interceptor

ApiServiceGenerator.java

ApiServiceGenerator.java

public class ApiServiceGenerator {
    private static final String BASE_URL = "http://192.168.0.205/hadia/api/";

    private static Retrofit.Builder builder =
            new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create());

    private static Retrofit retrofit = builder.build();

    private static OkHttpClient.Builder httpClient =
            new OkHttpClient.Builder();


    public static <S> S createService(
            Class<S> serviceClass) {

        return retrofit.create(serviceClass);
    }
}

我需要为每个请求添加一个授权头,我如何使用这个静态 createService 方法来做到这一点?

i need to add an Authorization Header to each request, how do i do that using this static createService method?

这里是如何创建一个拦截器来为每个请求添加标头

Here is how to create an Interceptor for adding header to each request

httpClient.addInterceptor(new Interceptor() {  
    @Override
    public Response intercept(Interceptor.Chain chain) throws IOException {
        Request original = chain.request();

        // Request customization: add request headers
        Request.Builder requestBuilder = original.newBuilder()
                .header("Authorization", "auth-value"); // <-- this is the important line

        Request request = requestBuilder.build();
        return chain.proceed(request);
    }
});

我如何添加此方法以向每个请求添加不记名令牌?

How i add this method to add a Bearer token to each request?

推荐答案

您需要使用构建改造实例时创建的 http 客户端.

You need to use the http client created when building the retrofit instance.

Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(httpClient)  // This is the line
                .addConverterFactory(GsonConverterFactory.create());

这篇关于如何在服务生成器类的改造中添加 http 拦截器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆