2012-04-03 342 views
1

如果服务器关闭或者没有互联网连接,则会引发UnknownHostException。如何确定UnknownHostException是因为服务器关闭还是没有互联网连接?如何知道UnknownHostException的原因?

这样做的原因是我需要通知有关错误的原因的用户。而且我必须展示这样的内容:“对不起,该服务目前不可用,请稍后再试”或“您没有互联网连接”。

回答

2

您可以查看网络状态,以确定是否互联网连接(不是100%可靠虽然):

ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 

if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED 
    || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ) { 
... 
} 

编辑:

恕我直言,没有办法告诉肯定手机互联网连接已关闭。 但是,除了检查网络状态之外,您还可以做一个简单的测试,例如从互联网上的网站上下载一个小页面(选择一些可靠的服务器)。

这种双重试验的结果应该是的时间准确99%。

+0

像这样检查网络状态并不是防止互联网连接可用的防弹方法。上面的验证完成后,互联网连接就可能断开。我正在寻找一种方法来了解UnknownHostException的原因是由于缺少intenet连接还是仅仅因为主机关闭。 – Arci 2012-04-09 12:09:44

+0

谢谢!目前,我已经在进行类似的验证以检查设备的网络连接。但是,如预期的那样,它不检查互联网连接的可用性。是否连接到网站,是检查互联网连接可用性的唯一方法?为了这个原因,即使没有得到他们的同意,是否有道德地联系像Google这样的第三方网站?或者是否真的有必要就此问题征得同意? – Arci 2012-04-11 04:01:56

+0

我不认为Google公司的大小会让你回答你的“ping-like”查询(除非每秒有几百个); – 2012-04-11 08:08:19

0

可以使用ConnectivityManager来检查网络状态。

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
bool hasConnectivity = connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting(); 
+0

我对这个评论是一样的作为塞巴斯蒂安。 – Arci 2012-04-09 12:10:45

2

的UnknownHostException被抛出,指示主机的IP地址无法确定。 不是没有互联网连接或服务器关闭的情况。

也检查您是否曾在manifeast文件添加Internet权限。

请参阅本LINK

要检查互联网连接使用bwlow方法::

//To check whether network connection is available on device or not 
public boolean checkInternetConnection(Activity _activity) { 
    ConnectivityManager conMgr = (ConnectivityManager) _activity.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (conMgr.getActiveNetworkInfo() != null 
      && conMgr.getActiveNetworkInfo().isAvailable() 
      && conMgr.getActiveNetworkInfo().isConnected()) 
     return true; 
    else 
     return false; 
}//checkInternetConnection() 

而且如果服务器发生故障大多是你会得到连接超时异常

+0

第一部分为+1。你应该指出'InetAddress.getByName()'方法抛出。 – Gray 2012-04-03 12:39:16

+0

嗨。感谢你的回答。但是,这并不能回答我的问题。我知道UnknownHostException抛出,表明主机的IP地址无法确定。但是,其原因可能是主机停机或没有互联网连接。有没有办法知道抛出异常的原因? UknownHostException太笼统。 – Arci 2012-04-09 12:06:29

+0

您的链接已损坏。 – Knossos 2014-09-11 08:26:27