官方文档只有获取响应头的代码,如下:
Headers responseHeaders = response.headers();
int responseHeadersLength = responseHeaders.size();
for (int i = 0; i < responseHeadersLength; i++){
String headerName = responseHeaders.name(i);
String headerValue = responseHeaders.get(headerName);
System.out.print("TAG----------->Name:"+headerName+"------------>Value:"+headerValue+"\n");
}
并没有请求头的示例代码:
不过好在 Request里面也有headers()方法,于是改写代码如下:
Headers requestHeaders = request.headers();
int requestHeadersLength = requestHeaders.size();
for (int i = 0; i < requestHeadersLength; i++){
String headerName = requestHeaders.name(i);
String headerValue = requestHeaders.get(headerName);
System.out.print("TAG----------->Name:"+headerName+"------------>Value:"+headerValue+"\n");
}
执行结果后输出了自己添加的Header。但是,系统自带的并没有输出。
尝试直接使用如下方式进行获取:
requestHeaders.get("Accept-Encoding");
但是结果却是 null
翻看源码,最终找到了如下方法:
Headers requestHeaders= response.networkResponse().request().headers();
最终得到期望的结果。
注:代码是在 okhttp 3.4.0版本上进行的