错误IOException在java中下载图像

时间:2015-08-11 23:08:45

标签: java image url

我尝试使用函数在java中下载imagen, 这是我发送函数的代码

saveImage(newString, folder.toString());

然后,这是我的函数saveImage

public static void saveImage(String imageUrl,String folderpath) throws IOException {
    URL url = new URL(imageUrl);
    //String destName = folder;
    //System.out.println(destName);

    InputStream is = url.openStream();
    OutputStream os = new FileOutputStream(folderpath);
    byte[] b = new byte[2048];
    int length;
    while ((length = is.read(b)) != -1) {
        os.write(b, 0, length);
    }
    is.close();
    os.close();
}

我尝试从stackoverflow的链接,但任何工作,所有的时间我有一个

java.io.IOException: Server returned HTTP response code: 403 for URL

我该如何解决?例外,谢谢

2 个答案:

答案 0 :(得分:0)

来自Web服务器的403 Forbidden HTTP状态返回代码表示可以访问服务器但拒绝采取任何操作,因为Web服务器被配置为拒绝访问(无论出于何种原因)所请求的资源。

因此,您向我们展示的代码没有任何问题,它与您尝试从中获取图片的网络服务器的配置有关。

尝试使用Authenticator来设置将用于所有请求的身份验证器默认值。您需要一个用户名和密码。

可以使用这样的东西:

Authenticator.setDefault(new Authenticator() {
 @Override
        protected PasswordAuthentication getPasswordAuthentication() {
         return new PasswordAuthentication(
   "user", "password".toCharArray());
        }
});

答案 1 :(得分:0)

这是修复它的代码,如果有人想要使用它。

public static void saveImage(String imageUrl, File folder, String m) throws IOException {
        if (!folder.exists()) {
            folder.mkdirs();
            System.out.println("si quedo con el if folderpath----" + folder);
        }
        URL url = new URL(imageUrl);
        //String destName = folder;
        //System.out.println(destName);
        m = m + ".jpg";
        //final URL url = new URL(urlStr);
        final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)");
        final BufferedImage image = ImageIO.read(connection.getInputStream());
        ImageIO.write(image, "jpg", new File(m));
    }