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();
}