问题描述
我是Java和HttpURLConnection的新手。应该在删除连接之前关闭已打开的IO流。如果我关闭流,我需要删除连接吗?
c> c> c> 可能在不久的将来。
I am new to Java and HttpURLConnection. Should I close the opened IO streams before dropping the connection. If I close the streams, should I need to drop the connection as well? Which is the proper way of implementation?
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(); } }解决方案You should call close() on the input/output/error streams when you are finished using them.
Disconnect is more complicated. According to the javadoc for disconnect():
This is recognizing the fact that HTTP 1.1 spec has a "persistent connection" feature that allows the same TCP/IP connection to be used in a sequence of requests to the same server. (This happens transparently.) When you call disconnect, it is likely to be taken as a hint to close the connection.
So from a resource and performance perspective:
- it is good idea to call disconnect if you aren't likely to send another request to the same server,
- it is a bad idea if another request is likely in the near future.
这篇关于HttpURLConnection关闭IO流的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!