我正在尝试使用以下代码连接 Google.com ,但获得
java.net.ConnectException: Connection Timed out。 请帮忙!
private static String getUrlContents(String theUrl) {
StringBuilder content = new StringBuilder();
// many of these calls can throw exceptions, so i've just
// wrapped them all in one try/catch statement.
try {
// create a url object
URL url = new URL(theUrl);
// create a urlconnection object
URLConnection urlConnection = url.openConnection();
// wrap the urlconnection in a bufferedreader
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
// read from the urlconnection via the bufferedreader
while ((line = bufferedReader.readLine()) != null) {
content.append(line + "\n");
}
bufferedReader.close();
} catch (Exception e) {
e.printStackTrace();
}
return content.toString();
}
答案 0 :(得分:0)
我刚刚尝试了您的代码,但效果很好。
似乎是网络问题,可能您无法访问Internet,或者防火墙正在停止连接。假设您在UNIX系统中,请尝试:
ping www.google.com -C 1
如果您没有得到答案,并且具有正常的访问连接(即来自浏览器),则可能是防火墙问题。
traceroute www.google.com
,检查应该是谷歌的服务器通常一个或两个的跳数。
如果您使用的是CentOS,则应严格限制防火墙,以尝试进行测试:
sudo systemctl stop firewalld
请记住再次启动它,并添加执行请求所需的规则。
答案 1 :(得分:-1)
因此,您不问怎么做: 如何从Java中的URL读取内容? Read url to string in few lines of java code。
您描述了一个问题,您希望对其进行分析甚至解决:
获取
java.net.ConnectException: Connection timed out
请参见following answer来提问Connection timed out. Why?
您应注意的事项:
- 您可以 ping 托管人(google.com)吗?
- 您可以使用网络浏览器连接到http://www.google.com吗?
- 您可以在 Web浏览器中使用 HTTPS 连接到https://www.google.com吗?
- 您可以使用您的程序连接到http://www.google.com吗?
- 您可以使用程序连接到任何其他URL吗?
您的问题很可能与防火墙有关。我的第一个猜测是您没有设置正确的环境变量或Java系统属性来告诉JVM将本地代理服务器用于传出的HTTP / HTTPS请求
从URL读取内容的另一种方法可能是免费的开源 JSoup 库。看一下如何在您的情况下使用它:http://jsoup.org/cookbook/input/load-document-from-url
使用JSoup,您甚至可以优雅地解析返回的HTML文档。