2
我是Java和HttpURLConnection的新手。我應該在斷開連接之前關閉打開的IO流。如果我關閉了這些流,我是否還需要刪除連接?哪一種是正確的實施方式?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();
}
}
您確定您的聲明對於關閉流是正確的嗎?我遇到了困難(可能是我堅持使用的JDK 1.6是bug)。但從某種意義上來說,如果在讀取輸入流之前關閉輸出流,那麼它會關閉套接字,並且無法讀取輸入。如果你關閉輸入流然後試圖關閉輸出流,那麼你也會得到一個異常,導致套接字關閉。 我想要一個響應處理程序來處理輸入流本身,但它似乎正確的順序是寫入輸出,讀取輸入,關閉輸出,關閉輸入? – fd8s0 2013-08-28 16:25:36
我不確定我說的話有多大意義,我最終解決了我的問題,但是對於高頻率請求,順序非常重要,特別是您需要確保您讀取整個輸入/錯誤流......這種輸入和錯誤流的分離是荒謬的,我不知道誰是涉及到的天才 – fd8s0 2013-08-28 17:33:11