package org.jeecg.modules.utils;
|
|
|
import javax.net.ssl.*;
|
import java.io.ByteArrayOutputStream;
|
import java.io.DataOutputStream;
|
import java.io.InputStream;
|
import java.net.URL;
|
import java.security.cert.CertificateException;
|
import java.security.cert.X509Certificate;
|
|
public class AiTestUils {
|
|
private static class TrustAnyTrustManager implements X509TrustManager {
|
/**
|
* 该方法检查客户端的证书,若不信任该证书则抛出异常。由于我们不需要对客户端进行认证,因此我们只需要执行默认的信任管理器的这
|
* 个方法。
|
* JSSE中,默认的信任管理器类为TrustManager。
|
*/
|
@Override
|
public void checkClientTrusted(X509Certificate[] chain, String authType)
|
throws CertificateException {
|
}
|
|
/**
|
* 该方法检查服务器的证书,若不信任该证书同样抛出异常。通过自己实现该方法,可以使之信任我们指定的任何证书。
|
* 在实现该方法时,也可以简单的不做任何处理, 即一个空的函数体,由于不会抛出异常,它就会信任任何证书。(non-Javadoc)
|
*/
|
@Override
|
public void checkServerTrusted(X509Certificate[] chain, String authType)
|
throws CertificateException {
|
}
|
|
/**
|
* @return 返回受信任的X509证书数组。
|
*/
|
@Override
|
public X509Certificate[] getAcceptedIssuers() {
|
return new X509Certificate[]{};
|
}
|
}
|
|
private static class TrustAnyHostnameVerifier implements HostnameVerifier {
|
@Override
|
public boolean verify(String hostname, SSLSession session) {
|
return true;
|
}
|
}
|
|
/**
|
* post方式请求服务器(https协议)
|
* @param url 求地址
|
* @param content 参数
|
* @return
|
*/
|
public static String sendJsonToHttpsPost(String url, String content) {
|
try {
|
/*
|
* 类HttpsURLConnection似乎并没有提供方法设置信任管理器。其实,
|
* HttpsURLConnection通过SSLSocket来建立与HTTPS的安全连接
|
* ,SSLSocket对象是由SSLSocketFactory生成的。
|
* HttpsURLConnection提供了方法setSSLSocketFactory
|
* (SSLSocketFactory)设置它使用的SSLSocketFactory对象。
|
* SSLSocketFactory通过SSLContext对象来获得,在初始化SSLContext对象时,可指定信任管理器对象。
|
*/
|
SSLContext sc = SSLContext.getInstance("SSL");
|
sc.init(null, new TrustManager[]{new TrustAnyTrustManager()},
|
new java.security.SecureRandom());
|
|
URL console = new URL(url);
|
HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
|
conn.setSSLSocketFactory(sc.getSocketFactory());
|
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
|
conn.setDoOutput(true);
|
// 设置请求头
|
conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
|
conn.connect();
|
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
|
out.write(content.getBytes());
|
// 刷新、关闭
|
out.flush();
|
out.close();
|
InputStream is = conn.getInputStream();
|
if (is != null) {
|
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
|
byte[] buffer = new byte[1024];
|
int len = 0;
|
while ((len = is.read(buffer)) != -1) {
|
outStream.write(buffer, 0, len);
|
}
|
is.close();
|
return outStream.toString();
|
}
|
} catch (Exception e) {
|
|
}
|
return null;
|
}
|
|
|
}
|