jdk1.7支持TLS设置及URLConnection的使用

今天写图片下载功能代码,主要功能是将服务器上的图片下载保存,在访问服务器端时,由于是使用的HttpsConnection,结果在conn=url.openconnection()后,用conn.getInputStream()时,出现了异常

握手失败?一看应该是网络连接问题,上百度查了一下,发现资源还是很多的,主要原因,JDK1.7与JDK1.8的SSL协议兼容问题,我本机是1.7,服务器是1.8

JDK1.7默认使用TLSv1.0,1.8默认使用TLSv1.2,但其实1.7是支持TLS1.2的,只不过没有默认启用,网上说可以设置jvm,我又找到对应jdk安装路径下jre/bin/javacpl.exe(有些开发人员电脑上可能装了好几个jdk版本,要找对应的),

 

打开设置了一下,没毛用。没办法只能从代码上想办法解决了。

方案一、直接升级成jdk.1.8试了一下,代码不用改,确实可以;

 

方案二、参考了以下两篇文件,修改代码后就可以了

https://stackoverflow.com/questions/30121510/java-httpsurlconnection-and-tls-1-2

http://www.hackerav.com/?post=22119

 

 

另外补充一点:

URLConnection是HttpURLConnection、HttpsURLConnection的父类,可能有些人在用url.openconnection()时,都是用父类声明变量赋值的,但是要注意只有HttpsURLConnection才有.setSSLSocketFactory()方法,http是没有的。当然http请求也用不到。所以大家可能要根据请求类型判断一下,创建不同的connection了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值