Java Web 学习笔记之七:HttpsURLConnection实现Https请求发送(基本用法)

Java api 的HttpURConnection可以进行普通的http请求发送响应接受,但是面对实现SSL的https时候就无能为力了,不过没关系,java api提供了支持https请求的HttpsURLConnection接口,接下来简单的说一下用法。

javax.net.ssl.HttpsURLConnection继承自java.net.HttpURLConnection,用法和后者基本一样,知识在使用之前还需要几步操作:

SSLSocketFactory sslSocketFactory = null;
try {
	TrustManager[] trustManagers = { new HttpsTrustManager() };
	SSLContext sslContext = SSLContext.getInstance("SSL");
	sslContext.init(null, trustManagers, new SecureRandom());
	sslSocketFactory = sslContext.getSocketFactory();
} catch (NoSuchAlgorithmException e) {
	e.printStackTrace();
} catch (KeyManagementException e2) {
	e2.printStackTrace();
}
URL url = new URL(String s);
httpsURLConnection = (HttpsURLConnection) url.openConnection();
httpsURLConnection.setSSLSocketFactory(sslSocketFactory);
httpsURLConnection.setHostnameVerifier(new HttpsHostNameVerifier());

其中,HttpsTrustManager实现了javax.net.ssl.X509TrustManager接口,HttpsHostNameVerifier实现了javax.net.ssl.HostnameVerifier接口,代码如下:

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;

/**
 * <pre>
 *     重写HostNameVerifier的verify方法
 *     返回true代表任何host都返回true
 * </pre>
 *
 * Created by Xuyh on 2016/12/8.
 */
public class HttpsHostNameVerifier implements HostnameVerifier {
	public boolean verify(String s, SSLSession sslSession) {
		return true;
	}
}
HttpsHostNameVerifier实现,其中的verify方法返回值为true代表所有host情况下都返回true


import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

/**
 * 自定义实现信任管理器
 * <pre>
 *     管理信任的数字证书
 *     如果实现方法不修改,则默认信任所有HTTPS站点的数字证书
 * </pre>
 *
 * Created by Xuyh on 2016/12/8.
 */
public class HttpsTrustManager implements X509TrustManager {
	public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

	}

	public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

	}

	public X509Certificate[] getAcceptedIssuers() {
		return new X509Certificate[0];
	}
}
HttpsTrustManager实现。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值