使用HttpsURLConnection时默认为HttpsURLConnectionOLDImpl异常ClassCastException

1 篇文章 0 订阅
1 篇文章 0 订阅

使用HttpsURLConnection时默认为HttpsURLConnectionOLDImpl异常ClassCastException

一、问题描述:

在测试环境是可以正常的发送到指定的https地址上,而在生产环境上访问时会抛出以下错误:
java.lang.ClassCastException:com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOLDImpl cannot be case to javax.net.ssl.HttpsURLConnection.

二、问题分析:(有待补充)
几乎同样的问题出现在CSDN的帖子中,没什么有用的回答:
http://bbs.csdn.net/topics/380110416

三、问题解决:
从谷歌中找到一篇相关的文章:
http://stackoverflow.com/questions/3038026/using-java-class-httpsurlconnection
并从中找到解决方法:
java.net.URL wsURL = new URL(null, url,new sun.net.www.protocol.https.Handler());

四、扩展延伸:
另外,百度到几篇相关的文章:
http://xmuzyq.iteye.com/blog/1162688
http://java.chinaitlab.com/base/821109.html

JDK中api:java.net.URL(String protocol, String host, int port, String file)


五、备注:

感谢互联网、强大的群众智慧

在Java中,`HttpURLConnection`是一个内置的类,用于通过HTTP协议发送GET、POST等类型的网络请求。对于HTTPS请求,你仍然可以使用`HttpURLConnection`,但是需要进行一些额外的设置,因为HTTPS默认使用的是SSL/TLS加密。 以下是使用`HttpsURLConnection`进行HTTPS请求的基本步骤: 1. **创建连接**: ```java URL url = new URL("https://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); ``` 注意这里传递的URL是"https"开头的。 2. **配置连接**: - 设置连接为输出流(如果是POST或PUT等需要发送数据的情况): ```java connection.setRequestMethod("POST"); // 或者其他方法如GET, PUT等 ``` - 配置为非缓存请求(如果你不想保存服务器响应): ```java connection.setUseCaches(false); ``` - 可能还需要添加身份验证信息(如果需要): ```java connection.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString(YOUR_USERNAME+":"+YOUR_PASSWORD).replace("\n", "")); ``` 3. **打开连接**: ```java connection.connect(); ``` 4. **读取或发送数据**: 如果有数据需要发送,使用`OutputStream`写入;如果没有,可以从`InputStream`读取响应内容。 5. **处理结果**: 检查返回的状态码,处理可能的错误并关闭连接: ```java int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 成功,读取响应内容 BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer content = new StringBuffer(); while ((inputLine = in.readLine()) != null) { content.append(inputLine); } in.close(); } else { handleErrorResponse(responseCode); // 自定义处理错误的逻辑 } // 关闭连接 connection.disconnect(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值