改造OkHttp与xxx的连接泄露

时间:2016-11-10 03:26:38

标签: android connection retrofit okhttp

当我使用 Retrofit 时,我收到了此警告,我从stackoverflow找到了很多答案。但他们中的许多人都在谈论 OkHttp

当我使用Retrofit时,我没有对响应主体做任何事情,我在改造中找不到任何方法。

这是我自定义的OkHttpClient:

private OkHttpClient getOkHttpClient(){
  OkHttpClient.Builder builder = new OkHttpClient.Builder();
  builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
  builder.writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
  builder.readTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
  builder.addInterceptor(new ZCommonIntercepter());
  return builder.build();
}

我确实有自定义拦截器,但我不认为这是警告的原因。

这里是我的拦截器,只需添加一个标题来保持与服务器的会话

Override
public Response intercept(Chain chain) throws IOException {
  Response originalResponse = chain.proceed(chain.request());
  if (!isFirst) {
     if (!originalResponse.headers("Set-Cookie").isEmpty()) {
       ConstantPool.SESSION_HIDUI = originalResponse.header("Set-Cookie");
     }
  }

  isFirst = true;
  Request request = chain.request()
                .newBuilder()
                .removeHeader("Cookie")
                .addHeader("Cookie", ConstantPool.SESSION_HIDUI)
                .build();

  return chain.proceed(request);
}

我想知道造成这个问题的原因是什么,没有改造2做响应机构。对我好吗?

如果我忽略了这个警告,那会有什么不好的事情发生吗?错了。

1 个答案:

答案 0 :(得分:0)

拦截器中的originalResponse尚未关闭。