如果服务器关闭或没有互联网连接,则抛出UnknownHostException
。如何确定是否因为服务器已关闭或没有互联网连接而引发UnknownHostException
?
原因是我需要通知用户错误原因。我必须显示类似“抱歉。该服务目前无法使用。请稍后再试”或“您没有互联网连接”。
答案 0 :(得分:4)
您可以检查网络状态以确定互联网连接是否可用(尽管不是100%可靠):
ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if ( conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ) {
...
}
编辑:
恕我直言,没有办法告诉肯定电话互联网连接已关闭。 但是,除了检查网络状态之外,您还可以进行一项简单的测试,例如从互联网上的网站下载一个小页面(选择一些可靠的服务器)。
这种双重测试的结果应该在99%的时间内准确。
答案 1 :(得分:2)
抛出UnKnownHostException以指示无法确定主机的IP地址。 没有互联网连接或服务器停机的情况。
还要检查您是否在展示文件中添加了互联网权限。
请参阅此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()
如果服务器大部分关闭,您将获得连接超时异常
答案 2 :(得分:0)
您可以使用ConnectivityManager
检查网络状态。
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
bool hasConnectivity = connectivityManager.getActiveNetworkInfo().isConnectedOrConnecting();