无法下载图片

时间:2014-09-02 18:45:54

标签: java

我正在尝试从url下载图像但是得到了java.io.IOException:exception。 我的代码是:

    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)

此代码适用于某些网址,但为此我无法理解为什么不这样做。 非常感谢。

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:0)

只是一个建议:

如果只发生在这个URL(或域)上,那么另一端的http-server实现可能会在处理请求之前检查一些HTTP-Header。并且您不会发送此类信息。

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

可能:禁止未知客户端(例如用户代理)

也许此链接有助于为您的请求添加标题:
https://stackoverflow.com/a/15555952/3887073

答案 2 :(得分: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");