Widziałem wiele różnych przykładów użycia HttpURLConnection + InputStream i zamykania ich (lub ich zamykania) po użyciu. Oto, co wymyśliłem, aby upewnić się, że po skończeniu wszystko jest zamknięte, czy wystąpił błąd, czy nie. Jest to ważne ?:Prawidłowe zamknięcie połączenia URLConnection i InputStream?
HttpURLConnection conn = null;
InputStream is = null;
try {
URL url = new URL("http://example.com");
// (set connection and read timeouts on the connection)
conn = (HttpURLConnection)url.openConnection();
is = new BufferedInputStream(conn.getInputStream());
doSomethingWithInputStream(is);
} catch (Exception ex) {
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
if (conn != null) {
conn.disconnect();
}
}
Dzięki
także chcą setConnectTimeout i setReadTimeout tak że w przypadku, gdy serwer nie jest dostępny lub ma błąd odczytu, połączenie nie zostanie zablokowane na zawsze. –
@metalideath - zdecydowanie, pominąłem je tylko dla zwięzłości, dodam notatkę w przykładzie na wypadek, gdyby ktoś użył jej jako kopii/wklejenia. – user291701
@metalideath: Zgodziłem się z tobą ... Tutaj po prostu odpowiedziałem na pytanie ... jest wiele rzeczy na tym świecie, musimy to zbadać ... –