我有以下代码,我似乎遇到了随机图像读取失败,没有例外。我在批处理作业中运行以下图像网址,其他一些网址则不合适。失败的是ImageIO.read是空的,尽管它是一个非常好的工作网址。发布的网址是我遇到失败的网址。任何人都知道可能导致此代码失败的原因。
我也想说我也使用Java 8。
try {
URL url;
url = new URL("https://content.homenetiol.com/672/27185/640x480/4d352f4ff9cf4948a93612e91401e128.jpg");
BufferedImage sourceImg = ImageIO.read(url);
System.out.println(sourceImg);
} catch (MalformedURLException ex) {
System.out.println("MalformedURLException " + ex.getMessage());
} catch (IOException ex) {
System.out.println("IOException " + ex.getMessage());
}
也是一个有效的网址
https://content.homenetiol.com/672/27185/640x480/49a9236f2196432db81e477fde44e756.jpg
答案 0 :(得分:1)
我很确定通过使用curl
来解决服务器偶尔会回复标准Java URL
无法处理的302重定向响应。
以下是使用Apache HttpClient获取图像的一些代码,即使服务器使用302重定向进行响应也能正常工作:
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
HttpGet httpget = new HttpGet("https://content.homenetiol.com/672/27185/640x480/4d352f4ff9cf4948a93612e91401e128.jpg");
try (CloseableHttpResponse response = httpclient.execute(httpget);
InputStream stream = response.getEntity().getContent()) {
BufferedImage sourceImg = ImageIO.read(stream);
System.out.println(sourceImg);
}
} catch (IOException e) {
e.printStackTrace();
}