1

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

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)

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

有谁知道解决这个问题的方法?

谢谢。

4

2 回答 2

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();
}
于 2013-06-17T12:50:17.740 回答
2

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

System.setProperty("http.proxyHost", "your proxyhost");
System.setProperty("http.proxyPort", "your proxyport");
于 2013-06-17T12:57:27.293 回答