我在 Android (API 16) 上使用 java.net.HttpURLConnection
。我使用 connect()
然后使用 getInputStream()
获取 InputStream
以从连接中读取数据。在我使用 InputStream
(即使用数据)之后,我close()
它。
问题是:这是否也关闭了底层的 HttpURLConnection
(就像通过调用 disconnect()
一样)?我的猜测不是,但我只是想确认这一点。更普遍的问题是:当连接不再有用时,我是否需要调用 java.net.HttpURLConnection.disconnect()?
问题是我有一种方法可以打开一个到给定主机的 HttpURLConnection
。签名是:InputStream OpenHttpConnection(String stringURL, String method)
。它返回一个 InputStream
,调用者使用它从连接中读取数据,但是如果我从该方法的主体中调用 disconnect()
,那么 InputStream
关闭并变得无用(我已经确认了这一点)。但是,另一方面,如果当我从调用者调用 InputStream
上的 close()
时连接没有关闭,那么我将有一个连接浪费资源.
有什么建议吗?
最佳答案
如果底层流仍然打开,调用 disconnect()
确实会关闭它们,但它还会将连接的资源释放回连接池,因此在您使用时调用它仍然是个好主意即使您在其他地方离散地关闭流,也能够(并完成连接)。
关于java - 使用连接后需要调用java.net.HttpURLConnection.disconnect()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148057/