首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将请求拦截器添加到特定调用中

将请求拦截器添加到特定调用中
EN

Stack Overflow用户
提问于 2015-12-15 12:02:58
回答 1查看 779关注 0票数 1

我目前正试图找出哪些选项进行改造,只为特定的呼叫添加一个拦截器。

背景和用例

我目前使用的是改造1.9

用例非常简单。假设一个用户需要登录并获得会话令牌。有个电话。

代码语言:javascript
复制
/**
 * Call the backend and request a session token
 */
@POST("auht_endpoint")
Observable<Session> login(...);

所有其他调用都需要来自上述会话的请求头形式的令牌。换句话说,所有后续调用都将有一个报头,它向后端提供会话令牌。

我的问题

是否有一种简单的方法仅通过拦截器将此头添加到特定的调用中?

我到目前为止尝试过的

  • 显然,最简单的方法是将@Header注释添加到特定的调用中,并将令牌作为参数提供。
  • 我想我们可以检查拦截器内部请求中的url。不太灵活。
  • 使用不同的拦截器创建不同的rest适配器。我听说,出于性能原因,您应该避免创建rest适配器的几个实例。

附加信息

  • 我没有承诺使用拦截器,我会使用其他解决方案
  • 我已经说过我使用的是改装1.9,但我也想用一种改造2.x的方法来实现。
EN

回答 1

Stack Overflow用户

发布于 2015-12-16 13:14:35

请注意这不是一个答复,评论框太小了。

我最近遇到了这个问题,我想出了和你一样的解决方案。

  • 首先,我把两个适配器放在一边--这是最后的办法。
  • @Header字段看起来不错,因为您明确地定义了这个特定请求需要授权。不过,使用起来有点无聊。
  • 拦截器中的Url检查看起来“很难看”,但我决定这样做。我的意思是,如果来自一个特定端点的所有请求都需要授权头,那么问题是什么?

我还有另外两个想法:

  • 以某种方式动态替换/修改与Retrofit一起使用的okHttpClient。经过一些测试,我觉得这是不可能的。
  • 也许可以为调用定义创建一些自定义注释@AddAuthorizationHeader,这将为您完成一切,但我想这也是不可能的。

在这个问题上,Retroff2.x并没有带来任何新的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34288781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档