在 Java 中,URL 连接何时关闭?

新手上路,请多包涵

java什么时候放弃与URL的连接?我在 URL 或 URLConnection 上都没有看到 close() 方法,所以它会在请求完成后立即释放连接吗?我主要是想看看是否需要在异常处理程序中进行任何清理。

 try {
  URL url = new URL("http://foo.bar");
  URLConnection conn = url.openConnection();
  // use the connection
}
catch (Exception e) {
  // any clean up here?
}

原文由 timdisney 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

这取决于协议中指定的具体协议。有些保持持久连接,有些则在您的调用在连接给出的输入或输出流中关闭时关闭它们的连接。但是除了记住关闭从 URLConnection 打开的流之外,您无能为力。

来自 java.net.URLConnection 的 javadoc

在请求之后调用 URLConnection 的 InputStream 或 OutputStream 上的 close() 方法可能会释放与此实例关联的网络资源,除非特定协议规范为其指定了不同的行为。

原文由 kasperjj 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果转换为 HttpURLConnection,则有一个 disconnect() 方法。如果连接空闲,它可能会立即断开连接。没有保证。

原文由 James Schek 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题