【发布时间】:2016-02-21 11:07:10
【问题描述】:
在我的应用程序中,我有 asyncTask 类,它连接到本地/远程服务器以获取一些数据,我想在 asyncTask 运行之前检查服务器连接, 我有这个功能:
public static boolean checkServerAvailable(String hostURL) {
HttpURLConnection connection = null;
try {
URL u = new URL(hostURL);
connection = (HttpURLConnection) u.openConnection();
connection.setConnectTimeout(5000);
connection.setRequestMethod("HEAD");
int code = connection.getResponseCode();
System.out.println("" + code);
return true;
// You can determine on HTTP return code received. 200 is success.
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
该函数使用超时连接服务器,如果超时则表示没有服务器。问题是我正在运行这段代码,即使服务器存在,它也会返回“没有服务器”。
我尝试设置一个较大的超时时间,例如 5000 毫秒,但它会暂停 UI 很长时间,有时即使服务器存在,仍会返回“没有服务器”。
我能做什么? 谢谢!
【问题讨论】:
-
可能是您的网络连接有问题。
-
it's returning "there is no server"。不可能的。该函数返回真或假。 -
在本地服务器上?在你的电脑上?应用程序无法在电脑上运行。仅在 Android 设备或 Android 模拟器程序中。模拟器在电脑上运行。
-
此答案无助于解决您的问题。请多说一点。如果您需要帮助,请回答所有问题和评论。
-
你还说应用在本地服务器上运行。那么你的手机是本地服务器吗?
标签: java android android-asynctask server