HttpsURLConnection 与 HttpURLConnection

HttpURLConnection  HttpsURLConnection

首先可理解Https=Http+SSL/TLSSSL:安全套接层协议,TLS:传输层协议)

HttpURLConnection这个类主要提供对HTTP协议的访问操作,若需要建立连接,必须实例对象

HttpsURLConnectionHttpURLConnection差别不大,通过HttpsURLConnection类的setSSLSocketFactory()方法获取SSLSocketFactory实例后就可当做HttpURLConnection类来进行使用。

SSLSocketFactory类用于操作SSL套接字,需要通过SSLContext类的getSockeFactory方法获取,SSLContext在初始化的时候需要配置对应的密匙库信任库

//实例化密钥库工厂管理

KeyManagerFactory keyManager = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

//获得密钥库
KeyStore keyStore = getKeyStore(keyStorePath,password);
//
初始化密钥库管理工厂
keyManager.init(keyStore,password.toCharArray());

 

//实例化密钥库工厂管理
TrustManagerFactory truestManager = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
//获得信任库
KeyStore trustStore = getKeyStore(keyStorePath,password);

//初始密钥库管理工厂

trustManager.init(trustStore);

 

完成上面的两步操作后,实例化SSLContext并获得SSL套接字工厂SSLSocektFactory 

//实例化SSLContext

SSLContext ctx = SSLContext.getInstance("TLS");

这里也可

SSLContext ctx = SSLContext.getInstance("SSL",”SunJSSE”);目的都是为了拿到SSLContext实例对象,可查看相应的javaAPI文档

 

//初始化SSL上下文

ctx.init(keyManager.getKeyManagers(),trustManager.getTrustManagers(),new SecureRandom());
//思考:如果是这样子来写init方法会有什么效果?

sslContext.init(null, trustManager.getTrustManagers(), new java.security.SecureRandom());

//即将第一个参数至值为null的情况

 

//获得SSLSocketFactory

SSLSocketFactory factory = ctx.getSocketFactory();

 

我们获得到SSLSocketFactory对象后,就可以用它来初始化HTTPSURLConnection对象了,如:

//建立HTTPS连接

URL url = new URL(httpsUrl);

 

//获得HttpsURLConnection对象

HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();

 

//HttpsURLConnection对象初始化我们从上面获得到的SSLSocketFactory实例。如:

conn.setSocketFactory(factory);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值