ImageIO.read() 毫无例外地失败并且有效 url
ImageIO.read() failing with no exception and a vaild url
我有以下代码,我似乎遇到随机图像读取失败,无一例外。我在批处理作业中 运行 下图 url,其他一些 url 可以工作,有些则不能。失败是 ImageIO.read 是空的,尽管它是一个非常好的工作 url。 url 发布的是我遇到故障的那个。任何人都知道什么可能导致此代码失败。
我还想说我也在使用 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());
}
也是一个工作 url
https://content.homenetiol.com/672/27185/640x480/49a9236f2196432db81e477fde44e756.jpg
我很确定通过 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();
}
我有以下代码,我似乎遇到随机图像读取失败,无一例外。我在批处理作业中 运行 下图 url,其他一些 url 可以工作,有些则不能。失败是 ImageIO.read 是空的,尽管它是一个非常好的工作 url。 url 发布的是我遇到故障的那个。任何人都知道什么可能导致此代码失败。
我还想说我也在使用 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());
}
也是一个工作 url
https://content.homenetiol.com/672/27185/640x480/49a9236f2196432db81e477fde44e756.jpg
我很确定通过 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();
}