HttpURLConnection 关闭 IO 流

2024-01-26

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

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();    
}
}

你应该打电话close()当您使用完输入/输出/错误流时。

断开连接比较复杂。根据javadocdisconnect():

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

这是认识到 HTTP 1.1 规范具有“持久连接”功能的事实,该功能允许在对同一服务器的一系列请求中使用相同的 TCP/IP 连接。 (这是透明地发生的。)当你打电话时disconnect,它很可能被视为关闭连接的提示。

所以从资源和性能的角度来看:

  • 最好打电话disconnect如果您不太可能向同一服务器发送另一个请求,
  • 如果在不久的将来可能会出现另一个请求,那么这是一个坏主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpURLConnection 关闭 IO 流 的相关文章

随机推荐