OkHttp,使用自定义拦截器时是否禁用了自动 GZIP?
OkHttp, is the automatic GZIP disabled when using a custom interceptor?
我在 Android 应用程序中使用 OkHttp 2.3.0。我的问题是关于透明 GZIP 功能。根据文档,它应该静静地在那里。但是我在请求中看不到 ("accept-encoding", "gzip")
header 。
我正在使用自定义拦截器添加身份验证:
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// 1. sign this request
[get token]
if (!TextUtils.isEmpty(token)) {
// we have a token. let's use it to sign the request
request = request.newBuilder()
.header(AUTH_HEADER_KEY, BEARER_HEADER_VALUE + token)
.build();
}
// 2. proceed with the request
Log.d("t", "Headers " + request.headers()); <--- no gzip header here
Response response = chain.proceed(request);
日志语句只显示header我添加的:
Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxx
但与 GZIP 编码无关。我应该做其他事情,还是在我调用 chain.proceed(request)
之后添加 header?
在chain.proceed()
之后添加了header。您可以通过使用网络拦截器而不是应用程序拦截器来查看它;请参阅 OkHttp 拦截器文档以了解两者的比较。
我无法从应用程序本身记录任何 OkHttp 透明 header。有些人推荐使用 Charles 代理客户端,这可能是分析网络流量的好方法,尽管我发现进行正确配置很棘手,而且从版本 4 开始它不再是免费工具。
不过,出于我的目的,我发现使用 network profiler 非常有用,它内置于 Android Studio(在 Arctic Fox 2020.3.1 上测试)。
您可以从下面的示例中看到,Accept-Encoding
header 在请求中可用,- 这个 header 是自动添加的,我没有在我的应用程序中添加它。
我在 Android 应用程序中使用 OkHttp 2.3.0。我的问题是关于透明 GZIP 功能。根据文档,它应该静静地在那里。但是我在请求中看不到 ("accept-encoding", "gzip")
header 。
我正在使用自定义拦截器添加身份验证:
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// 1. sign this request
[get token]
if (!TextUtils.isEmpty(token)) {
// we have a token. let's use it to sign the request
request = request.newBuilder()
.header(AUTH_HEADER_KEY, BEARER_HEADER_VALUE + token)
.build();
}
// 2. proceed with the request
Log.d("t", "Headers " + request.headers()); <--- no gzip header here
Response response = chain.proceed(request);
日志语句只显示header我添加的:
Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxx
但与 GZIP 编码无关。我应该做其他事情,还是在我调用 chain.proceed(request)
之后添加 header?
在chain.proceed()
之后添加了header。您可以通过使用网络拦截器而不是应用程序拦截器来查看它;请参阅 OkHttp 拦截器文档以了解两者的比较。
我无法从应用程序本身记录任何 OkHttp 透明 header。有些人推荐使用 Charles 代理客户端,这可能是分析网络流量的好方法,尽管我发现进行正确配置很棘手,而且从版本 4 开始它不再是免费工具。 不过,出于我的目的,我发现使用 network profiler 非常有用,它内置于 Android Studio(在 Arctic Fox 2020.3.1 上测试)。
您可以从下面的示例中看到,Accept-Encoding
header 在请求中可用,- 这个 header 是自动添加的,我没有在我的应用程序中添加它。