【问题标题】:Interceptor per api in retrofit2Retrofit2 中每个 api 的拦截器
【发布时间】:2016-04-16 02:40:44
【问题描述】:

我有四种不同的 api,每一种都有自己的标头。 我尝试使用拦截器机制来填充标头,而不是为每个调用提供相同的标头,但由于 OkHttp 拦截器针对每个请求运行,我无法为每个 api 创建一个拦截器。

我在 Retrofit2 中没有找到任何其他机制可以让我避免为每个请求编写相同的标头。

什么是给一堆调用相同的标题的好方法?

【问题讨论】:

  • 你可以给 okhttp 拦截器,并将 okclient 添加到改造构建器中
  • 我需要配置几个不同的 okhttp 客户端,因为每个改造 api 都有不同的拦截器。

标签: android retrofit okhttp retrofit2


【解决方案1】:

我遇到了同样的问题。我需要将缓存标头添加到基于 API 收到的响应中。

为了解决这个问题,我使用了一个拦截器,它可以评估响应的 URL,并根据它添加/删除缓存标头。

对于您的问题,拦截器将是这样的,

public class HeaderInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        HttpUrl url = request.url();

        // Add headers depending upon the url
        // Proceed the request
    }
}

将此拦截器添加到您的 OkHttp 客户端,它会将特定的标头添加到一组调用中。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2017-04-26
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多