连接代理时发生java.net.ConnectException: 连接超时错误

6

我正在尝试使用Java代码从URL下载ZIP文件并将其存储在本地系统中。我还使用系统代理进行相同的操作。但是无法连接到该URL。有任何想法吗?

public static void main()
{
   try
   {
      long startTime = System.currentTimeMillis();

      System.out.println("Connecting to the url...\n");
      System.setProperty("http.proxyHost", " http://abc.com");
      System.setProperty("http.proxyPort","1111");

      URL url = new URL("http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7z920.exe/download?use_mirror=nchc");
      url.openConnection();
      InputStream reader = url.openStream();
      FileOutputStream writer = new FileOutputStream("/home/user/result/apps.zip);
      byte[] buffer = new byte[153600];
      int totalBytesRead = 0;
      int bytesRead = 0;

      System.out.println("Reading ZIP file 150KB blocks at a time.\n");

      while ((bytesRead = reader.read(buffer)) > 0)
      {  
         writer.write(buffer, 0, bytesRead);
         buffer = new byte[153600];
         totalBytesRead += bytesRead;
      }

      long endTime = System.currentTimeMillis();

      System.out.println("Done downloading. " + (new Integer(totalBytesRead).toString()) + " bytes read (" + (new Long(endTime - startTime).toString()) + " millseconds).\n");
      writer.close();
      reader.close();
   }
   catch (MalformedURLException e)
   {
      e.printStackTrace();
   }
   catch (IOException e)
   {
      e.printStackTrace();
   }
   unZip(INPUT_ZIP_FILE);

}

我遇到了以下错误:

java.net.ConnectException: Connection timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    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:394)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
    at sun.net.www.http.HttpClient.New(HttpClient.java:306)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:977)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:925)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
    at java.net.URL.openStream(URL.java:1010)
    at test.main(test.java:33)

当我尝试ping这个URL时,它显示未知主机,但是我可以ping诸如www.google.com之类的URL。


@BigMike 是的,这个URL可以从Web浏览器中访问。 - Chirag
2
所以你无法ping通主机,但是可以浏览它吗?你的浏览器是否设置了通过代理运行? - Zarkonnen
@Zarkonnen 我在我的代码中指定了代理设置。 - Chirag
@BigMike 不是的,abc.com只是一个例子。 - Chirag
@user1729154 请检查您的代理设置,如果浏览器可以正常工作,那么肯定与此有关。您是在某个开发环境工具(例如Eclipse)中尝试代码吗? - BigMike
显示剩余8条评论
2个回答

7

试试这个页面,它介绍了如何使用代理 - 看起来很全面。


3

我认为您可能在某个防火墙后面,因为在我的本地机器上,您的代码运行得非常好。我没有对您的代码进行任何更改。zip文件已下载到我的本地机器。控制台显示以下消息:

连接到URL...

每次读取150KB的ZIP文件块。

下载完成。读取1110476字节(13816毫秒)。


你是在Eclipse或其他开发环境工具中运行它了吗? - Chirag
通过Eclipse,我甚至能够运行它。但当我尝试在Linux上运行时,问题就开始了。 - Chirag

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