2016-11-10 38 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尚未關閉。