在HttpURLConnection中使用setReadTimeout和代理设置

时间:2013-04-22 06:25:24

标签: java proxy httpurlconnection connection-timeout

我正在尝试使用用户定义的代理设置连接到互联网。我已将setReadTimeout设置为5秒。如果配置的代理不正确,那么我们将无法连接到互联网,我使用以下代码,但读取超时完全没有发生。

            URL u = new URL("http://www.google.com/");
            System.out.println("Checking internet connection availability.....");
            System.setProperty("java.net.useSystemProxies", "true");
            System.setProperty("http.proxyHost", proxyHost);
            System.setProperty("http.proxyPort", proxyPort);
            HttpURLConnection uc = (HttpURLConnection) u.openConnection();
            uc.setReadTimeout(5000);
            System.out.println("Response code : " + uc.getResponseCode());
            System.out.println("Internet connection is available.....");

如果我运行上面的代码,那么程序将继续执行,并且不会在5秒内终止。

有人可以帮我解决我的代码中的问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

尝试添加uc.setConnectTimeout(5000);

编辑:最终解决方案

在获取响应代码之前使用uc.connect();

此外,在打开HttpURLConnection时添加代理配置。

像这样:

HttpURLConnection uc = (HttpURLConnection) u.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(myProxyHost, Integer.parseInt(myProxyPort))));