我们正在为连接到内部wifi的移动设备开发一些内部应用程序。我们有一些问题,因为我们仅检查是否使用ConnectivityManager连接了设备。但是我们不仅需要检查是否存在连接,还需要检查设备与服务器之间的连接是否正常。
问题是ConnectivityManager告诉我们wifi已连接。但是,如果设备位于覆盖范围很小的区域,则应用尝试连接时会出错。
我们如何轻松地检查与服务器建立的连接是否仍在正确响应?例如,针对SQL Server打开连接的应用程序之一。有什么方法可以检查我们是否可以进入服务器并且可以正常运行,并且由于覆盖率低而不会丢失连接和软件包?
谢谢!
答案 0 :(得分:0)
如果收到NullPointerException
或IOException
最有可能是没有连接或连接超时的情况,则可以尝试ping服务器。
您可以在an answer to similar question by syb0rg处阅读更多内容。另外,请记住将这段代码包装在AsyncTask
或Thread
中,以防止您的应用崩溃。
try {
//replace URL with your domain
URL url = new URL("http://www.google.com");
HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
urlConnect.setConnectTimeout(1000);
urlConnect.getContent();
System.out.println("Connection established.");
} catch (NullPointerException np) {
np.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
}