sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
来源:互联网 发布:360防蹭网软件手机 编辑:程序博客网 时间:2024/05/16 14:15
<span style="white-space:pre"></span><h2 class="entry_title">java利用https请求服务器</h2><span style="font-size:18px;">sun.net.www.protocol.http.HttpURLConnection cannot be </span>
<span style="font-size:18px;"><span style="white-space: pre;"><span style="white-space:pre"></span>cast to </span><span style="font-family: Arial, Helvetica, sans-serif;">javax.net.ssl.HttpsURLConnection</span></span>
</pre><pre name="code" class="java">
package com.service;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.URL;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import sun.net.www.protocol.https.Handler;import com.weixin.util.MyX509TrustManager;/** * 地理位置处理类 * * @author yiyunqi * @date 2015-11-17 */public class LocaltionService {private static String LOCALTION_URL = "http://api.map.baidu.com/geocoder/v2/?location=22.685970,114.069473&output=xml&ak=<61f8bd72d68aefxxxxxxxxx&pois=1&Precision=65";public static void main(String[] args) {getXml("","");}public static String getXml(String lat,String lng){StringBuffer buffer = new StringBuffer();try {// 创建SSLContext对象,并使用我们指定的信任管理器初始化TrustManager[] tm = { new MyX509TrustManager() };SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");sslContext.init(null, tm, new java.security.SecureRandom());// 从上述SSLContext对象中得到SSLSocketFactory对象SSLSocketFactory ssf = sslContext.getSocketFactory();URL url = new URL(LOCALTION_URL);HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();httpUrlConn.setSSLSocketFactory(ssf);httpUrlConn.setDoOutput(true);httpUrlConn.setDoInput(true);httpUrlConn.setUseCaches(false);// 设置请求方式(GET/POST)httpUrlConn.setRequestMethod("POST");// 当有数据需要提交时if (null != "{\"Precision\":\"65.000000\"}") {OutputStream outputStream = httpUrlConn.getOutputStream();// 注意编码格式,防止中文乱码outputStream.write("{\"Precision\":\"65.000000\"}".getBytes("UTF-8"));outputStream.close();}InputStream inputStream = httpUrlConn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;while ((str = bufferedReader.readLine()) != null) {buffer.append(str);}} catch (Exception e) {e.printStackTrace();}return buffer.toString();}}
</pre><pre name="code" class="java"><span style="white-space:pre">java.lang.ClassCastException: sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection<span style="white-space:pre"></span>at com.service.LocaltionService.getXml(LocaltionService.java:43)<span style="white-space:pre"></span>at com.service.LocaltionService.main(LocaltionService.java:30)</span>
关于:sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection 异常的处理
原因:
在没有对使用的SSL实现类进行配置的情况下,在程序中如果正常使用java.net.URL的不带 URLStreamHandler 参数的构造方法new 一个URL对象的话,url.openConnection()默认是返回sun.net.www.protocol.http.HttpURLConnection 类型对象。所以我们带上一个URLStreamHandler
参数。
URL url = new URL(null,url,new Handler());
2 0
- sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
- 解决sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
- java.lang.ClassCastException: sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.n
- HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection
- weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
- 微信开发:weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
- weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
- weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
- 关于异常:HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection的解决办法
- java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl
- cannot be cast to javax.servlet.Servlet
- net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- 解决启动JBOSS时报错com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl
- StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Filter
- tomcat服务器cannot be cast to javax.servlet.Servlet问题
- StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Filter
- Caused by:....SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInit
- 问题:cannot be cast to javax.servlet.Filter的原因
- java二进制反序列化与序列化
- 澳门仍不景气,但是降速趋缓
- Java svn提交报错"out of date"
- IOS粒子系统的实现
- Centos7 开放端口
- sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
- php ord() 函数
- 如何写程序(1)
- 怎么计算apk的启动时间?
- c++ java
- 深入Java系列——面向对象之(一)——抽象
- SQL 日期类型的处理转换
- 状态模式(State Pattern)
- AFNetwork作用和用法详解