ImageIO.read()无异常失败并且是有效的URL

时间:2015-02-04 10:07:39

标签: java java-io

我有以下代码,我似乎遇到了随机图像读取失败,没有例外。我在批处理作业中运行以下图像网址,其他一些网址则不合适。失败的是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

1 个答案:

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