У меня есть небольшой фрагмент кода, где я открываю URLStream фильтра с некоторыми изображениями на нем.
Код работает нормально, если у меня есть доступ к этому файлу из адресата, где я запускаю код. Но если я запустил код, в котором у меня нет доступа к файлу, код не будет работать. Но я не ошибаюсь в коде! Код работает правильно и генерирует пользовательское исключение, если изображения не найдены.
Итак, как я могу поймать любую (или просто 401) ошибку HTTP? И, пожалуйста, я знаю, как разрешить вызов, но я не хочу этого делать. Я просто хочу обработать ошибку HTTP.
Вот мой код:
(...)
URL url = new URL("http://filer.example.com/pictures/" + list.get(0) + ".jpg");
IputStream in = new BufferedInputStream(url.openStream());
(...)
То, как вы это делаете, - это 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
}