我尝试使用函数在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
我该如何解决?例外,谢谢
答案 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));
}