【问题标题】:Error IOException downloading an image in java在java中下载图像时出错IOException
【发布时间】:2015-08-11 23:08:44
【问题描述】:

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

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

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

【问题讨论】:

  • 你真的不能用谷歌搜索“HTTP 403”吗?
  • 如果我没有尝试过,我不会发布这个..
  • 那么请澄清您的问题 - 您对可用信息“那是什么?”有什么不明白的地方?不是一个很好的问题。

标签: java image url


【解决方案1】:

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

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

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

可以这样使用:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多