2

我使用Sun 的 java 教程中的代码

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

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
        URL yahoo = new URL("http://www.yahoo.com/");
        URLConnection yc = yahoo.openConnection();
        BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                yc.getInputStream()));
        String inputLine;

        while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);
        in.close();
    }
}

堆栈跟踪与连接超时相同。为什么?

我怀疑这可能是防火墙的问题,但是

  1. ping 到 google.com 没问题
  2. 它在浏览器中工作
  3. 对于我提供的每个 URL,这种方法都失败了
  4. 我在其他程序中使用 DJ WebBrowser 组件,它可以作为浏览器使用

我该如何调查有关此问题的更多信息?我可以知道运行代码时将使用哪些端口号吗?

谢谢

4

2 回答 2

4

找到您公司使用的代理并将其设置在您的程序中。引用 [1] 中的代码

//Set the http proxy to webcache.mydomain.com:8080

System.setProperty("http.proxyHost", "webcache.mydomain.com");
System.setPropery("http.proxyPort", "8080");

// Next connection will be through proxy.
URL url = new URL("http://java.sun.com/");
InputStream in = url.openStream();

// Now, let's 'unset' the proxy.
System.setProperty("http.proxyHost", null);

// From now on http connections will be done directly.

[1] - http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html

于 2012-10-18T15:10:06.360 回答
0

还有一个 HttpURLConnection 在某些情况下可能会更好。它似乎没有以相同的方式断开连接。

URL url = new URL(address); 
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(callTimeout);

等等。

于 2018-07-25T15:38:06.960 回答