Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查url是否可访问_Java_Android_Httpurlconnection - Fatal编程技术网

Java 如何检查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

我正在尝试检查服务器url是否可以在android中访问。 我要检查的url如下:
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;
}