无法下载图片。

4

我正在尝试从URL下载图片,但遇到了java.io.IOException:异常。

我的代码如下:

    public static void main(String[] args) throws MalformedURLException, IOException {

    File picutreFile = new File("test.jpg");
    FileUtils.copyURLToFile(new java.net.URL("http://paceoil.ca/files/includes/images/images-stories-presentation-october-icon-graphic.jpg"), picutreFile);

}

当运行时抛出:

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: http://paceoil.ca/files/includes/images/images-stories-presentation-october-icon-graphic.jpg
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.URL.openStream(Unknown Source)
at org.apache.commons.io.FileUtils.copyURLToFile(FileUtils.java:1460)
at com.hrant.Test.main(Test.java:14)

这段代码对于一些链接有效,但我不理解为什么对于这个链接无效。非常感谢您的支持。


2
403 表示禁止访问。因此您没有权限访问该 URL。 - user3662273
我知道它的意思是禁止......但因为它在浏览器上运行,所以我有访问权限。 - Hrant Vardanyan
你需要登录到你想要下载的网站吗?你能右键点击并在浏览器中保存图片吗?另外,在 File picutreFile 中,你拼写了 picture 错误,你可能需要更改以防止未来的错误。 - turbo
3个回答

10

尝试在您的URL上设置用户代理属性,例如,看看这是否有所帮助:

File picutreFile = new File("src/test.jpg");
         URL url=new URL("http://paceoil.ca/files/includes/images/images-stories-presentation-october-icon-graphic.jpg");
         URLConnection conn = url.openConnection();
         conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0");
         conn.connect();
            FileUtils.copyInputStreamToFile(conn.getInputStream(), picutreFile);

你好,谢谢回答。但是在这段代码之后如何下载图片呢? - Hrant Vardanyan

0

这个服务器可能不能保证一些具有无效HTTP请求的请求。您可以在请求中发送HTTP标头文件,如果需要某些HTTP标头信息,则服务器将承诺为您下载此图像。就像这样:

URL myURL = new URL(serviceURL);
HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection();
String userCredent = "username:password";
myURLConnection.setRequestProperty ("property", value);
myURLConnection.setRequestMethod("POST");

0

仅供参考:

当这种情况仅发生在此URL(或域)时,可能是因为另一端的HTTP服务器实现在处理请求之前检查了一些HTTP头。而您没有发送这样的信息。

结果可能是服务器将以 403 响应。

也许:对于未知客户端(例如 User-Agent)禁止

也许这个链接会帮助您添加请求头:
https://dev59.com/umcs5IYBdhLWcg3wk0-X#15555952


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接