我使用拦截器设置请求的标头,如:
@NotNull
@Override
public Response intercept(@NonNull Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder = request.newBuilder();
builder.header("Authorization", "[token]");
builder.header("UniqueKey", "[key]");
etc;
return chain.proceed(builder.build());
}
和一切工作如预期(看到并接受服务器)。
我的问题是,当响应来的时候,我想在我的应用程序中读取这些标头。
@Override
public void onResponse(@NonNull Call<T> call, Response<T> response) {
}
我使用call.request.headers()
,但总是返回一个空字符串[]。所有其他属性(url,参数,动词)都是可访问的,只有头丢失。
我在请求头中设置了一个键,基本上我想在收到响应时检查这个键。
任何线索为什么头是不可见的,我怎么能得到他们在onResponse()
?
例子之一:
List<Header> headerList = response.getHeaders();
for(Header header : headerList) {
Log.d(TAG, header.getName() + " " + header.getValue());
}
必须在onResponse
方法内部使用。另一种方式:
// get headers
Headers headers = response.headers();
// get header value
String cookie = response.headers().get("Set-Cookie");