2013-09-23 38 views
1

我想要使用以下java代码获取http请求的请求。 但是,不确定地我得到以下例外。在java中调用http获取请求

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

public class API { 
    public static void main(String[] args) throws Exception { 
     URL oracle = new URL("http://www.oracle.com/"); 
     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.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) 
    at java.net.Socket.connect(Socket.java:579) 
    at java.net.Socket.connect(Socket.java:528) 
    at sun.net.NetworkClient.doConnect(NetworkClient.java:180) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:388) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:483) 
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:213) 
    at sun.net.www.http.HttpClient.New(HttpClient.java:300) 
    at sun.net.www.http.HttpClient.New(HttpClient.java:316) 
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:992) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:928) 
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:846) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1296) 
    at API.main(API.java:8) 
+0

你确定抛出异常?我已经尝试过上述功能,它对我来说工作得很好。 – Ami

+0

你的代码对我来说工作正常 –

回答

4

我猜你有一个防火墙和它的阻止该HTTP GET请求。

您的代码应该按照您的预期工作。 Java运行时之外的东西阻止了连接。

1

检查是否可以ping到http://www.oracle.com/

如果您可以ping通,请检查您是否位于代理服务器后面。

如果是这样提供-Dhttp.proxyHost-Dhttp.proxyPort同时启动JVM

java -Dhttp.proxyHost=<Your Proxy Server Name/IP> -Dhttp.proxyPort=<Your Proxy Server Port> 
+0

是的,我可以ping http://www.oracle.com/...how提供-Dhttp.proxyHost和-Dhttp.proxyPort启动JVM时??? –

+0

JVM允许您从命令行定义系统属性。您可以使用'-D'参数执行此操作,格式为'-Dproperty = value' – orien