网址连接超时

时间:2013-06-17 12:40:19

标签: java

我正在尝试使用下面提到的代码访问该网址

public static void main(String[] args) throws Exception {
    //CookieHandler.setDefault(new CookieManager(null,CookiePolicy.ACCEPT_ALL));
    // http://www.google.com/
    // http://finance.yahoo.com/d/quotes.csv?s=GOOG&f=g
    **URL oracle = new URL("http://finance.yahoo.com/d/quotes.csv?s=XOM+EK+JNJ+MSFT&f=snd1t1l1ohgvwdyr");
    URLConnection yc = oracle.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(
            yc.getInputStream()));**
    String inputLine;
    while ((inputLine = in.readLine()) != null)

        System.out.println(inputLine);
    in.close();
}

此代码在我家中工作正常,但同样的代码在办公室工作,我收到的错误就是这样。

Exception in thread "main" java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at com.yahoo.Connection.main(Connection.java:21)

我怀疑可能存在防火墙或代理问题,但我不确定。

有谁知道如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:2)

你可能支持某些公司代理。

如果是,请尝试使用此代码以编程方式启用代理:

private boolean proxyEnabled = true;

public static void main(String[] args) throws Exception {
    URL oracle = new URL("http://finance.yahoo.com/d/quotes.csv?s=XOM+EK+JNJ+MSFT&f=snd1t1l1ohgvwdyr");
    URLConnection yc;
    if(proxyEnabled) {
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("my.proxy.example.com", 3128));
        yc = oracle.openConnection(proxy);
    } else {
        yc = oracle.openConnection();
    }
    BufferedReader in = new BufferedReader(new InputStreamReader(
        yc.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null)

        System.out.println(inputLine);
    in.close();
}

答案 1 :(得分:2)

您可以尝试为程序设置这些属性。有了它们,java应该可以使用你的代理。也就是说,只要您掌握了相关信息。

System.setProperty("http.proxyHost", "your proxyhost");
System.setProperty("http.proxyPort", "your proxyport");