Java URL.openConnection在不同环境中返回HttpsURLConnection的不同实例
我正尝试使用以下代码片段在java中发出Https请求:Java URL.openConnection在不同环境中返回HttpsURLConnection的不同实例,java,url,networking,httpurlconnection,httpsurlconnection,Java,Url,Networking,Httpurlconnection,Httpsurlconnection,我正尝试使用以下代码片段在java中发出Https请求: 1. java.net.URL urlObject = new java.net.URL("/*my https url*/"); 2. javax.net.ssl.HttpsURLConnection HttpsURLConnection = (javax.net.ssl.HttpsURLConnection)urlObject.openConnection(); 在第2行的运行时,urlObject.openCo
1. java.net.URL urlObject = new java.net.URL("/*my https url*/");
2. javax.net.ssl.HttpsURLConnection HttpsURLConnection = (javax.net.ssl.HttpsURLConnection)urlObject.openConnection();
在第2行的运行时,urlObject.openConnection()
返回sun.net.www.protocol.https.DelegateHttpsURLConnection
的一个实例,该实例被类型转换为javax.net.ssl.HttpsURLConnection
,工作非常好
但是,在其中一种环境中,这不起作用,并出现以下例外情况:
java.lang.ClassCastException: com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl cannot be cast to javax.net.ssl.HttpsURLConnection
第2行中的urlObject.openConnection()
返回com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl
的实例,该实例不能键入javax.net.ssl.HttpsURLConnection
有人能帮我理解为什么urlObject.openConnection()
在不同的环境中返回不同类的不同实例吗。这与依赖关系等有关吗
其他信息:
- 关于这一点,我已经阅读了其他答案。我在这里的目的是理解发生这种情况的根本原因,这在其他答案中没有得到足够的表达
- 我发现的一个解决方法是使用
com.sun.net.ssl.HttpsURLConnection con=(com.sun.net.ssl.HttpsURLConnection)urlObj.openConnection()代码>代替第2行。但是
实际上已经被弃用了com.sun.net.ssl.HttpsURLConnection
- 另一个类似的解决方法是使用Http而不是Https,即使用
java.net.HttpURLConnection=(java.net.HttpURLConnection)urlObject.openConnection()代码>…但这并不能回答我关于问题实际发生原因的问题
- 我正在使用openJdk 8