sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection

原创 2015年11月18日 11:47:06
<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());


java.lang.ClassCastException: sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.n

在使用HttpClient时,发生异常: java.lang.ClassCastException: sun.net.www.protocol.http.HttpURLConnection ca...
  • llwan
  • llwan
  • 2017年02月06日 15:57
  • 3573

weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection

0、代码如下: public static JSONObject httpsRequest(String requestUrl, String requestMethod, String output...
  • u014520797
  • u014520797
  • 2015年12月11日 14:06
  • 7098

Eclipse中导入Heritrix,报错找不到类 sun.net.www.protocol.file.FileURLConnection

第一次用Heritrix,按照网上看到的用法导入Heritrix到Eclipse 。结果在org.archive.crawler.Heritrix 中报了这个错误。结果我在JDK自带的jar又可以找到...
  • u014470581
  • u014470581
  • 2016年11月24日 21:05
  • 368

android HTTPURLConnection解决不能访问HTTPs请求

转载自: http://www.trinea.cn/android/android-java-https-ssl-exception-2/ 详细分析Android及Java中访问http...
  • jianglili611
  • jianglili611
  • 2015年05月31日 18:11
  • 18779

HttpURLConnection, HttpClient机制分析

HttpClient httpClient.execute(Method) 直接发送请求并读取响应,而 method.getResponseBody 其实只是从response缓存中...
  • wangshfa
  • wangshfa
  • 2013年08月06日 08:38
  • 6932

微信开发:weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection

java.lang.ClassCastException: weblogic.net.http.SOAPHttpsURLConnection cannot be cast to javax.net.s...
  • hdblocal
  • hdblocal
  • 2016年09月08日 11:46
  • 2492

解决启动JBOSS时报错com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl

项目导入到本地后,启动JBOSS服务后报错如下: 2016-11-01 09:39:01,702 ERROR [STDERR] (Thread-19) java.lang.ClassCastExce...
  • u013124888
  • u013124888
  • 2016年11月01日 10:36
  • 1162

HttpURLConnection 设置Host 头部无效

最近做了一个服务,对外提供http接口,采用nginx反代,使用域名访问 但是为了容灾,客户端需要指定ip访问该服务,如果该ip坏掉,客户端就切换到另个一ip(靠dns解析太慢) nginx上...
  • zlfprogram
  • zlfprogram
  • 2018年01月11日 09:15
  • 43

J2EE 关于WebLogic下应用使用URL.openConnection获取连接返回 HttpsURLConnection与SOAPHttpsURLConnection的问题

做集成工作时使用到了第三方公司提供的接口JAR包,在本地TOMCAT测试通过后部署到WEBLOGIC上。抛出了weblogic.net.http.SOAPHttpsURLConnection cann...
  • arvinrong
  • arvinrong
  • 2012年07月04日 15:59
  • 12006

java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl

android 开发问题:java.lang.ClassCastException java.lang.ClassCastException: libcore.net.http....
  • qq_30638831
  • qq_30638831
  • 2016年04月12日 12:59
  • 1544
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sun.net.www.protocol.http.HttpURLConnection cannot be cast to javax.net.ssl.HttpsURLConnection
举报原因:
原因补充:

(最多只允许输入30个字)