如何获得改装请求报头onResponse回调



我使用拦截器设置请求的标头,如:

@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");

最新更新