我正在尝试使用"isReachable“方法检查是否可以找到某个主机。
line 113: oaiBaseURL = "http://www.cnn.com";//////////////////////////////////////
line 114: boolean res = InetAddress.getByName(oaiBaseURL).isReachable(10000);
line 115: System.out.println("------reachable:"+res);并获得以下错误消息(在eclipse中):
java.net.UnknownHostException: http://www.cnn.com
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
at java.net.InetAddress.getAddressFromNameService(Unknown Source)
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getByName(Unknown Source)
at com.irWizard.web.validator.WizardValidator.validateForm(WizardValidator.java:114)有谁知道这个错误的原因吗?
提前感谢!
发布于 2013-11-04 14:08:54
您需要删除http://前缀。
据我所知,InetAddress.getByName()方法使用的是主机名,而不是URL。
您可以按以下方式更改代码:
URL url = new URL("http://www.cnn.com");
boolean res = InetAddress.getByName(url.getHost()).isReachable(10000);
System.out.println("------reachable:"+res);但是,请记住isReachable()方法用于确定它是否可访问的机制。它主要使用ICMP技术,许多网站或中间防火墙可能会阻止这些技术。
发布于 2013-11-04 14:14:36
来自文档的报价
主机名可以是计算机名(如"java.sun.com“),也可以是其IP地址的文本表示。如果提供了文字IP地址,则只检查地址格式的有效性。
你不需要指定方案。只要删除"http://“”,它就能工作了。
发布于 2013-11-04 14:17:36
你按它应该的方式解析了这个网址吗?您只需要从URL获取主机名
URL oaiBaseURL = new URL("http://www.cnn.com");
boolean res = InetAddress.getByName(oaiBaseURL.getHost()).isReachable(10000);
System.out.println("------reachable:"+res); https://stackoverflow.com/questions/19769326
复制相似问题