繁体   English   中英

使用java类HttpsURLConnection

[英]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。 检查你的网址。

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

  1. 使用错误的导入
  2. 在字符串中使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM