java关闭io流,HttpURLConnection关闭IO流

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():

"Indicates that other requests to the server are unlikely in the near future."

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值