Как скачать zip-файл из Интернета с помощью JAVA и сохранить его в определенной папке? - PullRequest
3 голосов
/ 13 января 2012

Это мой код:

public static void downloadZipFile() {
    String saveTo = "C:\\Users\\aria\\Downloads\\Temp";
    try {
        URL url = new URL("http://www.bcfi.be/download/files/R1112B2_BcfiHtm.zip");
        URLConnection conn = url.openConnection();
        InputStream in = conn.getInputStream();
        FileOutputStream out = new FileOutputStream(saveTo + "BcfiHtm.zip");
        byte[] b = new byte[1024];
        int count;
        while ((count = in.read(b)) >= 0) {
            out.write(b, 0, count);
        }
        out.flush(); out.close(); in.close();                   

    } catch (IOException e) {
        e.printStackTrace();
    }
}

** Когда я компилирую его, я получаю следующую ошибку, но если я использую URL непосредственно в браузерах, все в порядке.

Как я могу это исправить?или есть другой способ скачать zip файл? **

java.net.UnknownHostException: www.bcfi.be
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
at sun.net.www.http.HttpClient.New(HttpClient.java:307)
at sun.net.www.http.HttpClient.New(HttpClient.java:324)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
at be.azvub.ext.prismaFlex.Exterahelp.download.DownloadFile.downloadZipFile(DownloadFile.java:72)
at be.azvub.ext.prismaFlex.Exterahelp.download.DownloadFile.main(DownloadFile.java:37)

Ответы [ 2 ]

7 голосов
/ 13 января 2012

Цитирование из документов Java:

Брошенный, чтобы указать, что IP-адрес хоста не может быть определена.

Убедитесь, что ваша программа не заблокирована Брандмауэром или прокси .

UPDATE:

Чтобы настроить свой прокси-сервер, сделайте так, как предложил Питер Лильенберг:

Вы можете передать информацию о прокси вызову openConnection в твой код такой:

Proxy proxy = новый прокси (Proxy.Type.HTTP, новый InetSocketAddress ( "про", 9999)); URLConnection conn = url.openConnection (прокси);

6 голосов
/ 13 января 2012

Поскольку вы находитесь за прокси, вы можете попробовать несколько разных подходов:

1) Добавить информацию о прокси в JVM при запуске:

java -Dhttp.proxyHost=proxyhostURL -Dhttp.proxyPort=proxyPortNumber 
-Dhttp.proxyUser=someUserName -Dhttp.proxyPassword=somePassword javaClassToRun

В вашем случае это, вероятно, будет:

java -Dhttp.proxyHost=pro -Dhttp.proxyPort=9999  javaClassToRun

2) Вы можете передать информацию о прокси вызову openConnection в вашем коде следующим образом:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("pro",9999));
URLConnection conn = url.openConnection(proxy);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...