使用java类HttpsURLConnection

KB2*_*B22 32 java https

我有一小段代码基本上要求HTTP-Client,即它的POSTS请求,并与re RESPONSE一起工作.只要HTTP被认为是更好的工作.出于某种原因,我现在也必须支持HTTPS.所以这里简要介绍一下如何打开连接:

 URL url = new URL(serverAddress);
 HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();
Run Code Online (Sandbox Code Playgroud)

这失败了,说:

sun.net.www.protocol.https.HttpsURLConnectionImpl cannot be cast to com.sun.net.ssl.HttpsURLConnection
Run Code Online (Sandbox Code Playgroud)

我想这有点微不足道,但我只是不知道我在这个问题上做错了...用Google搜索,代码看起来是对的 - 不是吗?

任何想法都表示赞赏!

Bal*_*usC 28

只需保留java.net.URLConnection或转换它java.net.HttpURLConnection.两者都提供了完成所需任务的方法.


A面的话无关的技术问题:你应该从来没有明确的导入/使用Sun的Java SE实现特定的类在你的代码.这些是未记录的类,并且可能会在升级JVM时导致代码中断.另一方面,当您在不同品牌的JVM上运行代码时,您的代码也可能会中断.


更新:因为你似乎不小心有进口的,去窗口>首选项>的Java>外观>类型过滤,并 添加 com.sun.*sun.*到列表中.这样你就不会意外地导入它们:

在此输入图像描述


小智 19

您的网址协议也应该是https而不是http.检查你的网址.


小智 13

上述问题只是由两个问题引起的

  1. 使用错误的导入
  2. http在字符串中使用,您可以使用而不是使用urlhttps


小智 7

而不是使用标准构造函数创建URL对象

URL wsURL = new URL(url);
Run Code Online (Sandbox Code Playgroud)

使用

java.net.URL wsURL = new URL(null, url,new sun.net.www.protocol.https.Handler());
Run Code Online (Sandbox Code Playgroud)

这将解决这个问题


Dav*_*ton 6

检查你的进口,你应该使用

java.net.HttpURLConnection
Run Code Online (Sandbox Code Playgroud)

要么

javax.net.ssl.HttpsURLConnection
Run Code Online (Sandbox Code Playgroud)


小智 5

检查"serverAddress"变量的值.它应该https而不是http