如何停止JSoup / OkHttpClient:连接被泄露?

时间:2018-02-15 16:38:41

标签: android jsoup okhttp

我的Android应用使用Jsoup连接到网站

implementation group: 'org.jsoup', name: 'jsoup', version: '1.11.2'

我的logcat有这些消息

OkHttpClient: A connection to http://www.xxx.yyy.zzz/ was leaked. Did you forget to close a response body?

我的jsoup连接类似于: -

final Document feedNavigator = Jsoup.connect(uri.toString()).referrer(JSOUP_REFERRER).userAgent(USER_AGENT).followRedirects(true).ignoreContentType(true).ignoreHttpErrors(true).maxBodySize(JSOUP_MAX_BODY_SIZE).timeout(JSOUP_TIMEOUT).get();

我的印象是jsoup处理了自己的资源。

为什么我会收到这些logcat警告?

我该如何解决这个漏洞?

1 个答案:

答案 0 :(得分:0)

在 Kotlin 中我是这样使用的:

try {
                val req: Request = Request.Builder().url(url).get().build()
                val client = OkHttpClient()
                val resp: Response = client.newCall(req).execute()
                val code: Int = resp.code() // can be any value
                body= resp.body()
                if (code == 200) {
                    body?.close() // I close it explicitly
                }