У меня есть следующий код:ImageIO.read() возвращает 403 ошибку
public BufferedImage urlToImage(String imageUrl) throws MalformedURLException, IOException {
URL url = new URL(imageUrl);
BufferedImage image = ImageIO.read(url);
return image;
}
, который должен вернуть изображение из заданного URL.
я тестировал с этими двумя произвольно выбранными URL-адресов:
- https://www.google.co.ma/images/srpr/logo4w.png
- http://www.earthtimes.org/newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg
Первый из них работает хорошо, но вторая дает 403 ошибку:
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.earthtimes.org/newsimage/osteoderms-storing-minerals-helped-huge-dinosaurs-survive_3011.jpg
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
at java.net.URL.openStream(URL.java:1010)
at javax.imageio.ImageIO.read(ImageIO.java:1367)
Что может быть причиной ошибки? Благодарю.
большое спасибо. Ответ на вопрос: означает ли это, что сервер не хочет обслуживать нестандартный UA, чтобы его контент не использовался вне стандартного использования? или просто потому, что сервер настроен на поведение по умолчанию? –
На самом деле, большинство серверных реализаций по умолчанию не являются черными списками UA. Более вероятно, что администраторы этого конкретного веб-сайта отказались от запрета Java-агентов. – Perception
Меня беспокоят проблемы с авторским правом. Поэтому я беру его, если агенты Java черных списков admin могут означать, что их изображения нельзя использовать за пределами браузера. (В моем приложении пользователь может указать URL-адрес в качестве изображения профиля, и я храню указанное изображение, поэтому, если URL-адрес недоступен больше, изображение профиля будет по-прежнему доступно). Я не уверен, что мне придется помешать пользователю использовать изображение или просто предупредить их о возможном нарушении авторских прав. –