【发布时间】:2019-10-12 18:27:54
【问题描述】:
我有一个授权 api,它返回 null 正文但在标头中带有访问令牌。 我能够读取 okhttp3.Headers 对象并使用
将标题名称设置为 SetHeaders headers = response.headers(); // response object of type Response<T>
Set<String> headerNames = headers.names();
但在代码中,标头对象不显示作为响应返回的自定义标头 (access_token)。但是,在邮递员中,我可以看到如下所示的自定义标题:
access_token -> { "Token":"adklasldalksdalkdask",
"Provider":"ABC" }
我正在使用拦截器来获取标题,如图所示:
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS);
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
有人可以建议如何在身份验证响应中读取访问令牌作为自定义标头的一部分吗?
【问题讨论】:
-
是的,我似乎已经尝试过: Set
headerNames = headers.names(); List headersList = new ArrayList(headerNames);这也给了我空对象 String token = response.get("access_token") -
访问令牌是 api 发送的自定义标头。这有什么区别吗?
-
抱歉,我只是注意到您从邮递员发布的自定义标头是 2 对,令牌和提供者。您是否尝试获取“令牌”而不是“access_token”?另外,如果您可以循环打印标题并打印它们,那么我想您可以检查您是否获得了自定义标题。
-
response.get("Token") 也给出了 null。实际上我尝试检查 logcat 中的标题列表。此特定标头 access_token -> { "Token":"adklasldalksdalkdask", "Provider":"ABC" } 未在此处列出。
标签: android retrofit access-token interceptor response-headers