【问题标题】:How to read response headers and write request headers using apollo-android如何使用 apollo-android 读取响应头和写入请求头
【发布时间】:2018-09-25 02:51:39
【问题描述】:

我正在尝试使用 apollo-android 库与 graphql 服务器进行通信。问题是后端使用标头对请求进行身份验证,而我找不到添加它们的方法。同样在身份验证请求中,令牌是在标头中发送的,我找不到从响应中读取它的方法。

人们建议通过 OkHttpClient 中的拦截器设置身份验证标头,但这种方法不适用于我的情况,因为客户端必须在不同的请求中发送不同的标头集。

那么,在这种情况下有什么解决方法吗?我应该使用像 Retrofit 这样的简单休息客户端,还是应该在每个带有所需标头集的新请求上创建新的 ApolloClient 和 OkHttpClient 实例?或者也许还有其他解决方法?

【问题讨论】:

  • 您是否正在寻找解释如何将 RequestHeaders 添加到 graphql 查询/变异的语法?

标签: java android http-headers apollo apollo-android


【解决方案1】:

人们建议通过 OkHttpClient 中的拦截器设置身份验证标头,但这种方法不适用于我的情况,因为客户端必须在不同的请求中发送不同的标头集。

在接受不同标头的拦截器上具有 setter 方法和字段。在发出需要标头的 ApolloClient 请求之前调用这些 setter 方法。

或者,教拦截器如何根据对拦截器可见的请求特征(例如,URL)为不同的请求应用不同的标头。

【讨论】:

  • 这个用例可能吗?我一个接一个地发出request1(r1)request2(r2)request3(r3)并分别设置header1(h1)header2(h2)header3(h3)。当 r1 与 h1 一起执行时,将 r2 与 h2 以及 r3 与 h3 排入队列。当 r2 执行时,拦截器将具有 h3 头,因此 r2 可以与 h3 一起执行。问题是拦截器何时被调用,在执行时还是在入队时?
  • @VladKudoyar:我不知道拦截器的确切时间,但我猜它们是在执行时使用的。不过,您需要测试该理论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2015-10-09
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 2016-05-06
相关资源
最近更新 更多