android - 如何在服务生成器类的改造中添加 http 拦截器

标签 android retrofit retrofit2

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

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);
    }
}

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

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

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);
    }
});

我如何添加此方法以向每个请求添加 Bearer token ?

最佳答案

我有一个像这样的 Creator

class Creator {
    public static Services newServices() {
        final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        final OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .build();

        final Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Services.HOST)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create(GsonUtils.get()))
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        return retrofit.create(Services.class);
    }
}

关于android - 如何在服务生成器类的改造中添加 http 拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54033743/

相关文章:

android - 无法使用 RxJava 和 Reterofit2 创建端点

android - 意外的行为改造+协程

java - 更新 listView 中的一行,每四行更新一次

android - 如果我们连续有很多 TextView ,我们如何在自定义 ListView 中单击该 TextView 时更改 TextView 的文本?

java - 如何使用 Retrofit 发出请求

android - 改造 - 具有相同 RestAdapter 的多个端点

android - 如何创建 POJO 类以使用动态键名进行改造

java - 清除另一个应用程序缓存

java - 在android中用逗号对数字进行分组

安卓改造错误