OkHttp连接泄漏日志行,即使OkHttp不是依赖项

问题描述 投票:3回答:1

使用我的应用程序时,我始终在Logcat中看到以下日志行:

19098-19147/<package> W/OkHttpClient: A connection to <my server> was leaked. Did you forget to close a response body?

我对此漏洞进行了一些研究,发现当您做诸如忘记关闭拦截器中的响应主体之类的事情时,它可能会发生。我注释掉了所有拦截器,看其中一个是否引起了此问题,但是我仍然看到了日志行。我最终注释掉了OkHttp的所有用法,但仍然以某种方式得到了错误。我什至要从Gradle文件中删除所有OkHttp依赖项,并添加一条明确的行以确保将其排除为传递性依赖项。我运行gradle app:dependencies来生成我的依赖树,因此我可以确保不包含OkHttp。我仍然以某种方式看到此日志行。我不知道怎么可能。

没有人知道任何可能已将此日志行复制并粘贴到OkHttp库中并粘贴到他们的公用库中吗?我搜索了其他依赖项的所有源代码,但在任何依赖项中均未找到类似的日志行。

这与Android Studio注入的新配置文件代码有关吗? See this article for more information.

更新:原来我的Fresco依赖项必须一直在使用系统提供的OkHttp或类似的东西。 @Selvin评论说Android内部使用它。无论如何,显然当Fresco在尝试加载图像时收到带有错误的HTTP响应(在我的情况下为HTTP响应代码401)时,它将记录此错误。我看不到使用Fresco / OkHttp处理HTTP错误的任何好方法。我用壁画打开了以下问题:HTTP error response when loading image results in leaked connection #1983

android okhttp3 okhttp
1个回答
0
投票

我知道这是很晚的回复,但也许有人仍然对此问题感到疯狂,最后我才知道发生了什么。是的:从Android 4.4开始,OkHttp在HttpURLConnection / HttpsURLConnection

© www.soinside.com 2019 - 2024. All rights reserved.