首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpURLConnection关闭IO流

HttpURLConnection关闭IO流
EN

Stack Overflow用户
提问于 2013-04-05 20:45:27
回答 1查看 6.9K关注 0票数 5

我是Java和HttpURLConnection的新手。我应该在断开连接之前关闭打开的IO流吗?如果我关闭流,我是否也需要断开连接?哪种方式才是正确的实现方式?

代码语言:javascript
复制
try {
String uri = "http://localhost:8081/RESTEASY/saju/post/text";
URL url = new URL(uri);
connection =
    (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "text/plain");
connection.setRequestProperty("Content-Type", "text/plain");
connection.setDoOutput(true);

OutputStream os = connection.getOutputStream();

//bla bla

System.out.println(connection.getResponseCode());
InputStream iStream = connection.getInputStream();

//bla bla

} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}finally{
    // os.close(); - IS THIS REQUIRED
    // iStream.close(); - IS THIS REQUIRED
    connection.disconnect();    
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-05 21:23:08

当您使用完输入/输出/错误流时,您应该对它们调用close()

断开连接则更为复杂。根据disconnect()的javadoc

“表明在不久的将来不太可能向服务器发出其他请求。”

这是对HTTP1.1规范具有“持久连接”特性的认识,该特性允许在对同一服务器的一系列请求中使用相同的TCP/IP连接。(这是透明的。)当您调用disconnect时,它很可能被视为关闭连接的提示。

因此,从资源和性能的角度来看:

  • 如果您不太可能将另一个请求发送到同一服务器,则调用disconnect是个好主意,
  • 如果在不久的将来可能会有另一个请求,则不是一个好主意。
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15834350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档