Java 如何检查url是否可访问
我正在尝试检查服务器url是否可以在android中访问。 我要检查的url如下:Java 如何检查url是否可访问,java,android,httpurlconnection,Java,Android,Httpurlconnection,我正在尝试检查服务器url是否可以在android中访问。 我要检查的url如下:https://mydomain.se:8081/,也可从internet访问。但在下面的某个时候得到一个问题的方法返回true,而在某个时候返回false public boolean isBackendAccessAble(String serverUrl) { String host = serverUrl.substring(serverUrl.indexOf("://") + 3, serve
https://mydomain.se:8081/
,也可从internet访问。但在下面的某个时候得到一个问题的方法返回true,而在某个时候返回false
public boolean isBackendAccessAble(String serverUrl) {
String host = serverUrl.substring(serverUrl.indexOf("://") + 3, serverUrl.lastIndexOf(":"));
int port = Integer.parseInt(serverUrl.substring(serverUrl.lastIndexOf(":") + 1, serverUrl.length() - 1));
boolean isReachable = false;
try {
SocketAddress sockAddress = new InetSocketAddress(host, port);
Socket sock = new Socket();
int timeoutMs = 2000; // 2 seconds
sock.connect(sockAddress, timeoutMs);
isReachable = true;
} catch (Exception e) {
Log.w(TAG, "Unable to check serverUrl:" + serverUrl);
}
return isReachable;
}
有没有其他方法可以通过移动数据从android检查服务器?有,当然有。甚至我也可以从手机浏览器浏览后端url。所以,即使连接互联网,你的方法也会返回true或false?是的。有时它返回我真,有时返回假。看看这个,我发现了一个问题。这是因为从主线程调用此方法,所以有时会出现异常:android.os.NetworkOnMainThreadException。有人能给我提示,如果我使用新线程并在运行时使用这个连接,我如何添加等待,直到启动的线程完成并返回响应?
public boolean isBackendAccessAble(String serverUrl) {
String host = serverUrl.substring(serverUrl.indexOf("://") + 3, serverUrl.lastIndexOf(":"));
int port = Integer.parseInt(serverUrl.substring(serverUrl.lastIndexOf(":") + 1, serverUrl.length() - 1));
boolean isReachable = false;
try {
SocketAddress sockAddress = new InetSocketAddress(host, port);
Socket sock = new Socket();
int timeoutMs = 2000; // 2 seconds
sock.connect(sockAddress, timeoutMs);
isReachable = true;
} catch (Exception e) {
Log.w(TAG, "Unable to check serverUrl:" + serverUrl);
if (e instanceof SocketTimeoutException ){
//the url is not reachable
isReachable=false;
}
}
return isReachable;
}