OkHttpClient 关闭连接

Posted

技术标签:

【中文标题】OkHttpClient 关闭连接【英文标题】:OkHttpClient close connection 【发布时间】:2015-05-17 07:43:20 【问题描述】:

我想使用 OkHttpClient 加载一个 url,如果给定 url 的网站以 pdf 内容类型响应,我将继续下载 PDF,否则我想忽略响应。

我的问题是,我是否需要做任何特别的事情来关闭请求/响应,或者我是否需要做任何事情来表明如果我选择不读取响应字节流,我将不会使用响应?如果没有,OkHttpClient 什么时候关闭连接?

【问题讨论】:

【参考方案1】:

调用response.body().close() 将释放响应所持有的所有资源。连接池将保持连接打开,但如果未使用,则会在超时后自动关闭。

【讨论】:

感谢您的回答。我是否需要自己关闭响应,或者如果我忽略它们会自动释放资源?即使我确实在字节流中读取,我是否应该在响应上调用关闭,当然是在读取之后?最后,如果我在 onfinished 回调中对请求调用取消,这会释放响应吗? 一般情况下需要关闭响应。如果你把字节流读到最后,OkHttp 会为你释放资源,但无论如何关闭它仍然是一个好习惯。如果您取消请求,则只需在调用 onResponse 时关闭。如果没有,那么我们会尽早取消它,以至于没有什么可以关闭的。 您也可以调用response.close(),根据文档,它等同于response.body().close()

以上是关于OkHttpClient 关闭连接的主要内容,如果未能解决你的问题,请参考以下文章

Java相关

Java相关问题整理

如何使用 OkHttpClient 真正断开与 WebSocket 的连接?

如何创建符合 GRPC 的 OkHttpClient?

添加自签名证书 OkHttpClient

改造2:捕捉连接超时异常