如何在服务生成器类的改造中添加 http 拦截器 [英] How to add http interceptor in retrofit in a service generator class
问题描述
我创建了一个单独的服务生成器类,如本指南所示 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屋!