当前位置: 首页 > 面试题库 >

如何在Retrofit 2.0中使用拦截器添加标题?

万乐逸
2023-03-14
问题内容

我们的团队决定采用 Retrofit 2.0, 而我正在对此进行一些初步研究。我是这个图书馆的新手。

我想知道如何在Android应用中interceptor通过 Retrofits 2.0 添加自定义标题。在Retrofit
1.X中有许多关于使用添加标题的教程interceptor,但是由于API在最新版本中已经发生了很大变化,因此我不确定如何在新版本中适应这些方法。另外,Retrofit尚未更新其新文档。

例如,在以下代码中,如何实现Interceptor该类以添加额外的标头?此外,未记录的Chain对象到底是什么?何时会intercept()被调用?

    OkHttpClient client = new OkHttpClient();
    client.interceptors().add(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Response response = chain.proceed(chain.request());

            // How to add extra headers?

            return response;
        }
    });

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_API_URL)
            .client(client)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

问题答案:

看一下这个。

public class HeaderInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request()
                .newBuilder()
                .addHeader("appid", "hello")
                .addHeader("deviceplatform", "android")
                .removeHeader("User-Agent")
                .addHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0")
                .build();
        Response response = chain.proceed(request);
        return response;
    }
}

科特林

class HeaderInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response = chain.run {
        proceed(
            request()
                .newBuilder()
                .addHeader("appid", "hello")
                .addHeader("deviceplatform", "android")
                .removeHeader("User-Agent")
                .addHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0")
                .build()
        )        
    }
}


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

  • 问题内容: 我将这个拦截器添加到我的OkHttp客户端中: 如何在拦截器中添加标题以进行请求? 我尝试了这个,但是我犯错了,创建新请求时我丢失了请求: 请注意,我知道我可以在创建请求时添加标头,如下所示: 但这不符合我的需求。我在拦截器中需要它。 问题答案: 最后,我以这种方式添加了标题:

  • 我创建了一个单独的服务生成器类,如下所示:https://futurestud.io/tutorials/retorfit-2-manage-request-headers-in-okhttp-interceptor apiserviceGenerator.java

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

  • 谢谢你的提示 问候Rizzi

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