簡體   English   中英

HttpURLConnection關閉IO流

[英]HttpURLConnection Closing IO Streams

我是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()

斷開連接更復雜。 根據disconnect()的javadoc:

“表示在不久的將來不太可能向服務器發出其他請求。”

這意味着HTTP 1.1規范具有“持久連接”功能,允許在對同一服務器的一系列請求中使用相同的TCP / IP連接。 (這是透明的。)當您調用disconnect ,可能會將其視為關閉連接的提示。

所以從資源和性能的角度來看:

  • 如果您不太可能向同一台服務器發送另一個請求,最好調用disconnect
  • 如果在不久的將來可能有另一個請求,這是一個壞主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM