当前位置: 首页 > 知识库问答 >
问题:

如何在服务生成器类中添加http拦截器

湛博易
2023-03-14

我创建了一个单独的服务生成器类,如下所示:https://futurestud.io/tutorials/retorfit-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);
    }
}
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);
    }
});

共有1个答案

南宫凯康
2023-03-14

我有一个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);
    }
}
 类似资料:
  • 问题内容: 在Spring Boot应用程序中添加HttpRequest拦截器的正确方法是什么?我想做的是记录每个HTTP请求的请求和响应。 我发现了一些有关如何对较早版本的spring进行相同操作的Web示例,但这些示例与applicationcontext.xml一起使用。请帮忙。 问题答案: 由于你使用的是Spring Boot,因此我假设你希望在可能的情况下依靠Spring的自动配置。要添

  • 我找到了一些关于如何使用spring旧版本执行相同操作的web示例,但这些示例适用于ApplicationContext.xml。请帮帮忙。

  • 我想在我的Quarkus应用程序中添加一个HTTP拦截器,这样我就可以拦截所有HTTP请求。如何实现?

  • 问题内容: 我们的团队决定采用 Retrofit 2.0, 而我正在对此进行一些初步研究。我是这个图书馆的新手。 我想知道如何在Android应用中通过 Retrofits 2.0 添加自定义标题。在Retrofit 1.X中有许多关于使用添加标题的教程,但是由于API在最新版本中已经发生了很大变化,因此我不确定如何在新版本中适应这些方法。另外,Retrofit尚未更新其新文档。 例如,在以下代码

  • 在RestTemplate中,我有一个自定义拦截器,它将记录一些请求-响应详细信息并保存到数据库。 我的自定义拦截器: springboot中的RestTemboard bean配置: 将拦截器添加到restTemboard bean: 如何将此拦截器添加到佯装客户端? 正在应用中。yml: InterceptorOne为假装客户端中的每个请求添加标头: 但是我不能添加日志服务拦截器,因为它由于错

  • 我们的团队决定采用改型2.0,我正在做一些初步的研究。我是这个图书馆的新手。 我想知道如何使用在我们的Android应用程序中通过改装2.0添加自定义标题。有很多教程介绍如何使用在翻新版1.X中添加标头,但由于API在最新版本中发生了很大变化,我不知道如何在新版本中适应这些方法。此外,改装尚未更新其新文档。 例如,在以下代码中,我应该如何实现类来添加额外的头?此外,未记录的对象究竟是什么?何时调用