所以我有一個檢查,如果設備連接到互聯網的方法based on this one安卓:檢查連接到服務器
它的工作原理確定,但在幾個案例我發現,雖然手機顯示連接到互聯網,它仍然無法訪問我的服務器。我真的想要做的是檢查連接到我的特定URL。
我該怎麼實現?
所以我有一個檢查,如果設備連接到互聯網的方法based on this one安卓:檢查連接到服務器
它的工作原理確定,但在幾個案例我發現,雖然手機顯示連接到互聯網,它仍然無法訪問我的服務器。我真的想要做的是檢查連接到我的特定URL。
我該怎麼實現?
你可以這樣做:
public boolean isConnectedToServer(String url, int timeout) {
try{
URL myUrl = new URL(url);
URLConnection connection = myUrl.openConnection();
connection.setConnectTimeout(timeout);
connection.connect();
return true;
} catch (Exception e) {
// Handle your exceptions
return false;
}
}
這將嘗試連接到您的服務器的URL,如果失敗,你顯然不具備的連接。 ;-)
您可以嘗試
InetAddress.getByName(host).isReachable(timeOut)
Runtime runtime = Runtime.getRuntime();
Process proc;
try {
proc = runtime.exec("ping -c 1"+ (String) getText(R.string.Server));
proc.waitFor();
int exit = proc.exitValue();
if (exit == 0) { // normal exit
} else { // abnormal exit, so decide that the server is not
// reachable
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // other servers, for example
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
您的投票可能是因爲您指定超時爲long,但.setConnectTimeout(您錯過拼寫)只接受一個int值。 – 2012-09-20 18:22:44
你知道NetworkOnMainThreadException嗎?.. – levi 2014-09-17 15:34:22
@levi,我不知道你在做什麼,所以我的答案不得不這樣做嗎? – AedonEtLIRA 2014-09-17 20:32:42