未知主机异常

时间:2011-05-24 13:18:38

标签: java exception url

try { 
{
    long startTime = System.currentTimeMillis();

        String source="s";
        String source1="s";
        URL google = new URL("http://google.com/"); 
        HttpURLConnection yc =(HttpURLConnection)google.openConnection(); 
        BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); 
        String inputLine;


        while ((inputLine = in.readLine()) != null) { 
            source=source.concat(inputLine);
        }
        in.close();

        yc.disconnect();

    }

long endTime1 = System.currentTimeMillis();
System.out.println("Total elapsed time in execution of method callMethod() is :"+ (endTime1-startTime));


    } 
}

当我通过命令提示符尝试上述操作时  我得到了

java.net.UnknownHostException: google.com 
at java.net.PlainSocketImpl.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 ScagntJavaHttp.httpMakeRequest(ScagntJavaHttp.java:185) 
at test.main(test.java:23)

能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

我认为这是代理问题。 尝试查看您的浏览器中是否有代理定义,然后进行设置:

    ProxySelector.setDefault(new ProxySelector() {

        @Override
        public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
            throw new RuntimeException("Proxy connect failed", ioe);
        }

        @Override
        public List select(URI uri) {
            return Arrays
                .asList(new Proxy(Proxy.Type.HTTP,
                                  new InetSocketAddress(proxyHost,
                                                        proxyPort)));
        }
    });

要查看您是否在IE中有代理定义,请转到工具 - Internet选项 - 连接 - Lan设置

答案 1 :(得分:3)

当您获得http://时,请尝试从主机网址中删除java.net.UnknownHostException并检查您的互联网连接并确保主机存在(谷歌可能是安全的...)