2016-11-10 127 views
1

当我使用Retrofit时,我发现这个警告,我从stackoverflow找到很多答案。但其中很多人都在谈论OkHttpRetrofit OkHttp与xxx的连接被泄露

当我使用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); 
} 

我想知道是什么原因导致问题的会议上,并没有在retrofit2做响应主体。为我关闭?

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

+0

显示您的日志与例外 – raj

+0

11-11 09:47:57.936 1412-1412 /? W/ContextImpl:在没有合格用户的情况下调用系统进程中的方法:android.app.ContextImpl.sendBroadcast:105 com.android.server.am.OppoActivityStackHelper.sendIsHomeModeIntent:65 com.android.server.am.OppoActivityStackHelper.handleSendHomeMode: 92 com.android.server.am.ActivityStack.resumeTopActivityLocked:1561 11-11 09:47:58.536 4462-4496 /? W/okhttp3.OkHttpClient:与http://xxx.xxx.xx.xx/的连接被泄露。你忘了关闭响应机构吗? –

+0

只是连接到xxx.xxx.xx.xx被泄露。您忘记关闭响应主体... –

回答

0

您拦截器中的originalResponse尚未关闭。