Как отловить ошибку HTTP по java.net.URL

1

У меня есть небольшой фрагмент кода, где я открываю URLStream фильтра с некоторыми изображениями на нем.

Код работает нормально, если у меня есть доступ к этому файлу из адресата, где я запускаю код. Но если я запустил код, в котором у меня нет доступа к файлу, код не будет работать. Но я не ошибаюсь в коде! Код работает правильно и генерирует пользовательское исключение, если изображения не найдены.

Итак, как я могу поймать любую (или просто 401) ошибку HTTP? И, пожалуйста, я знаю, как разрешить вызов, но я не хочу этого делать. Я просто хочу обработать ошибку HTTP.

Вот мой код:

(...)
URL url = new URL("http://filer.example.com/pictures/" + list.get(0) + ".jpg"); 
IputStream in = new BufferedInputStream(url.openStream());
(...)
Теги:
url

1 ответ

2
Лучший ответ

То, как вы это делаете, - это shortcut для более длинной формы:

URL url = new URL("http://filer.example.com/pictures/" + list.get(0) + ".jpg");
URLConnection connection = url.openConnection();
connection.connect();
InputStream in = connection.getInputStream();

В случае HTTP вы можете безопасно отбросить URLConnection в HttpURLConnection чтобы получить доступ к материалам, связанным с протоколом:

URL url = new URL("http://filer.example.com/pictures/" + list.get(0) + ".jpg");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.connect();
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
    // everything ok
    InputStream in = connection.getInputStream();
    // process stream
} else {
    // possibly error
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню