Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 UrlConnection未打开HttpsUrlConnection_Java_Ssl_Https_Java Me - Fatal编程技术网

Java UrlConnection未打开HttpsUrlConnection

Java UrlConnection未打开HttpsUrlConnection,java,ssl,https,java-me,Java,Ssl,Https,Java Me,我正在尝试通过Java嵌入式机器连接到安全http 我在端口8090上运行了自签名apache服务器。当我使用web浏览器导航到https://myserver:8090它显示自签名证书警告并加载ok 我有这个密码 URL dstUrl = new URL("https://myserver:8090") URLConnection result = dstUrl.openConnection(); System.out.println("Pr

我正在尝试通过Java嵌入式机器连接到安全http

我在端口8090上运行了自签名apache服务器。当我使用web浏览器导航到
https://myserver:8090
它显示自签名证书警告并加载ok

我有这个密码

        URL dstUrl = new URL("https://myserver:8090")
        URLConnection result = dstUrl.openConnection();


        System.out.println("Protocol: "+dstUrl.getProtocol()+", is HTTPS:"+(result instanceof HttpsURLConnection)); 
// Echo: Protocol HTTPS is HTTPS:false

        if (result instanceof HttpsURLConnection) {//will not reach
            try {
                HttpsURLConnection conn = (HttpsURLConnection) result;
                conn.setSSLSocketFactory(sslContext.getSocketFactory());
                conn.setHostnameVerifier(defaultHostVerifier);
            } catch (Exception e) {
                //sout will not ignate
            }
        }
        return (HttpURLConnection) result;
这段代码应该可以正常工作,但是openConecction()将始终返回HttpUrlConnection,而不是HttpsUrlConnection。如果我知道协议是https,是否有可能强制打开HttpsUrlConnection

编辑:

我的进口:

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
编辑2:

我在发卡机构网站上发现,应该在机器启动时应用
URLStreamHandlerFactory
,因此https协议由弃用的
com.sun.net.ssl.internal.www.protocol.https.Handler

现在我知道javax的HttpsUrlConnection不是返回的,而是一个
com.sun.net.ssl.HttpsUrlConnection


无论如何,谢谢

您确定这不是您的服务器的问题吗?使用
https://www.google.com
为我返回一个HttpsURLConnection,就像使用自签名证书在本地服务器上测试一样。我已经尝试过了。同样,它总是HttpUrlException。我想这是因为机器上的Java已经过时了。您使用的导入是否正确?我已经将我的导入列表添加到了问题中