【问题标题】:java.net.ConnectException: Connection timed out while connecting through a proxyjava.net.ConnectException:通过代理连接时连接超时
【发布时间】:2012-09-29 12:47:35
【问题描述】:

我正在尝试从 URL 下载 zip 文件并使用 java 代码将其存储在本地系统中。我也在使用系统代理。它无法连接到网址。有什么想法吗?

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 网址时显示未知主机,但我可以 ping 诸如 www.google.com 之类的网址

【问题讨论】:

  • 如果你不能ping你怎么能连接到?该网址是否可以在网络浏览器中使用?
  • 我刚刚检查了当我在我的机器上打开连接到该 URL 时会发生什么,我可以很好地读取数据。这表明您的计算机无法与 sourceforge.net 通信。正如@BigMike 建议的那样,看看您是否可以在浏览器中真正访问该 URL。
  • @BigMike 是的,该网址可在网络浏览器中使用
  • 所以你不能ping主机,但你可以浏览到它?您的浏览器是否设置为通过代理运行?
  • @Zarkonnen 由于 http.proxyHost 的设置,我怀疑是一样的,顺便说一句,abc.com 实际上是一个 http 代理?

标签: java url proxy download urlconnection


【解决方案1】:

试试这个page,了解如何使用代理 - 看起来很全面。

【讨论】:

    【解决方案2】:

    我认为您在某些防火墙后面,因为您的代码在我的本地计算机上运行良好。我没有对您的代码进行任何更改。 zip 文件下载到我的本地计算机中。控制台显示此消息:

    正在连接到网址...

    一次读取 ZIP 文件 150KB 块。

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

    【讨论】:

    • 你是通过eclipse还是其他开发环境工具运行的?
    • 通过 Eclipse,即使我能够运行它。但是当我通过 linux 尝试时问题就开始了
    猜你喜欢
    • 2011-08-05
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多