Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 了解HTTPS url是否联机_Java_Android_Ssl - Fatal编程技术网

Java 了解HTTPS url是否联机

Java 了解HTTPS url是否联机,java,android,ssl,Java,Android,Ssl,我需要一个函数,如果安全网站的证书由CA签名,它将返回true。在Android中,如果您尝试连接到自签名证书,它将抛出SSLException,在这种情况下,我只捕获它并返回false。您可以检查代码: public static boolean isValidCertificate(URL url) throws IOException { HttpsURLConnection con; try { con = (HttpsURLConnection) url

我需要一个函数,如果安全网站的证书由CA签名,它将返回true。在Android中,如果您尝试连接到自签名证书,它将抛出SSLException,在这种情况下,我只捕获它并返回false。您可以检查代码:

public static boolean isValidCertificate(URL url) throws IOException {
    HttpsURLConnection con;
    try {
        con = (HttpsURLConnection) url.openConnection();
        con.connect();
        con.disconnect();
        return true;
    } catch (SSLException e) {
        return false;
    } 
}
我的问题是,如果站点不可用,我希望函数抛出异常。但我刚刚发现Android在本例中抛出了相同的SSLException,带有相同的消息:“没有可信的服务器证书”

无论证书是否有效,是否有办法知道服务器是否在线


谢谢

用一个假URL测试它,例如“https://flimflam.asdfasdfasdfg.com“看看你的情况会怎样


如果基于
openConnection
方法未建立连接,If应触发
IOException
。很可能这是一个超时,您将花费时间等待超时时间。

尝试使用
con.getResponseCode()之前<代码>连接断开()
以获取所需的异常。

我找到了解决方案。在调用此函数之前,我只需要检查URL是否在线。我可以在没有CA签名检查的情况下使用我的httpsclient并获得响应,然后,我调用此方法。

npe,很抱歉,我不是在问如何避免CA检查。事实上,我已经知道如何做到这一点。然后,也许可以发布您得到的异常的完整堆栈跟踪。还有你用来信任所有证书的代码。我的代码没问题,但我犯了一个错误,谢谢你,因为我一直在思考你上一篇文章,我找到了解决方案。我会发布的。如果网站不可用。。。在这种情况下,Android抛出了同样的SSLException,带有同样的消息:“没有可信的服务器证书”。它将抛出一个
ConnectException
noroutetohestexception
未知hostexception
,等等。你一定在做一些非常奇怪的事情。我试过了,没有用。但是谢谢!(它抛出了相同的异常)。我尝试使用一个假URL并调试该函数,它抛出了相同的异常。这让我很恼火…换句话说,你忽略了
ConnectException
并继续进行证书验证。我没有忽略
ConnectException
,因为我没有得到它!