[英]Using java class HttpsURLConnection
我有一小段代码基本上要求HTTP-Client,即它的POSTS请求,并与re RESPONSE一起工作。 只要HTTP被认为是更好的工作。 出于某种原因,我现在也必须支持HTTPS。 所以这里简要介绍一下如何打开连接:
URL url = new URL(serverAddress);
HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();
这失败了,说:
sun.net.www.protocol.https.HttpsURLConnectionImpl cannot be cast to com.sun.net.ssl.HttpsURLConnection
我想这有点微不足道,但我只是不知道我在这个问题上做错了...用Google搜索,代码看起来正确 - 不是吗?
任何想法都表示赞赏!
只需保留java.net.URLConnection
或将其转换为java.net.HttpURLConnection
。 两者都提供了完成所需任务的方法。
A面的话无关的技术问题:你不能明确地导入/使用Sun的Java SE实现特定的类在你的代码。 这些是未记录的类,并且可能会在升级JVM时导致代码中断。 另一方面,当您在不同品牌的JVM上运行代码时,您的代码也可能会中断。
更新 :因为你似乎不小心有进口的,去窗口>首选项>的Java>外观>类型过滤器和添加 com.sun.*
和sun.*
到列表中。 这样你就不会意外地导入它们:
您的网址协议也应该是https而不是http。 检查你的网址。
上述问题只是由两个问题引起的
http
,您可以使用https
来创建url 而不是使用标准构造函数创建URL对象
URL wsURL = new URL(url);
使用
java.net.URL wsURL = new URL(null, url,new sun.net.www.protocol.https.Handler());
这将解决这个问题
检查“serverAddress”变量的值。 它应该https而不是http
检查你的进口,你应该使用
java.net.HttpURLConnection
要么
javax.net.ssl.HttpsURLConnection
更改:
import javax.net.ssl.HttpsURLConnection;
和
URL url = new URL(serverAddress);
HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();
改成:
import java.net.HttpURLConnection;
和
URL url = new URL(serverAddress);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
很难说没有看到整个文件,但是当你真的想要javax.net.ssl.HttpsURLConnection时,它看起来像是在导入com.sun.net.ssl.HttpsURLConnection。
在我的例子中,调用httpsUrlConnection时协议和端口不正确。
端口和协议被定义为静态类变量。 失败步骤之前的步骤是调用httpUrlConnection。 该方法将端口/协议更改为80 / http,但最后没有将其设置回/ https。 因此,尽管调用了httpsUrlConnection,它仍然使用http / 80。 一旦我在httpUrlConnection方法结束时重置那些,错误就消失了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.