Загрузка файла в httpclient с использованием Java? - PullRequest
0 голосов
/ 21 января 2011

Мой код,

import java.io.*;
import java.net.*;

 public class DownloadHttp
 {
public static void main(String a[])
{
    DownloadHttp d  =   new DownloadHttp();
    String addr =   "http://www.gmail.com";
    String file =   "D:/venkatesh/Software/download1.html";
    d.download(addr,file);
}


    public void download(String address, String localFileName) {
   OutputStream out = null;
   URLConnection conn = null;
  InputStream in = null;
   try {
    // Get the URL
    URL url = new URL(address);
    // Open an output stream to the destination file on our local filesystem
    out = new BufferedOutputStream(new FileOutputStream(localFileName));
    conn = url.openConnection();
    in = conn.getInputStream();

    // Get the data
    byte[] buffer = new byte[1024];
    int numRead;
    while ((numRead = in.read(buffer)) != -1) {
        out.write(buffer, 0, numRead);
    }            
    // Done! Just clean up and get out
} catch (Exception exception) {
    exception.printStackTrace();
} finally {
    try {
        if (in != null) {
            in.close();
        }
        if (out != null) {
            out.close();
        }
    } catch (IOException ioe) {
        // Shouldn't happen, maybe add some logging here if you are not 
        // fooling around ;)
    }
  }
 }
 }

Здесь я хочу скачать определенный файл, используя httpClient, используя java. Он производит:

"java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)" as error.

Как решить, помогите, заранее спасибо.

Ответы [ 3 ]

1 голос
/ 21 января 2011

Перекомпилировал ваш код на моей машине, он отлично работает. Я могу получать файлы из Интернета.

Проверьте, может ли ваш веб-браузер загрузить файл для вас (убедитесь, что это не проблема сети)

Следует отметить одну вещь: в вашем блоке finally вы можете захотеть закрыть потоки отдельно. Поэтому, если что-то пойдет не так с входным потоком, выходной поток все равно будет закрыт.

finally {
        try {
            if (in != null) {
                in.close();
            }
        } catch (Exception ignored) {}
        try {
            if (out != null) {
                out.close();
            }
        } catch (Exception ignored) {}
    }
1 голос
/ 21 января 2011

Я считаю, что это проблема сети.Вы пытались получить прямой доступ к URL или вы находитесь за брандмауэром?

0 голосов
/ 11 июля 2011

Я думаю, что вы используете прокси при подключении к Интернету.

Установите их в коде и повторите попытку.

System.setProperty("http.proxyHost", *Proxy-IP*);
System.setProperty("http.proxyPort", *Proxy-Port*);
...