* 发送https请求
* @param apiURL:请求URL
* @param postParams:请求参数
* @return
*/
public static String sendHttpsPost(String apiURL, String postParams){
logger.info("http send url :" + apiURL);TrustManager[] trustAllCerts = new TrustManager[1];
TrustManager tm = new SSLTrustManager();
trustAllCerts[0] = tm;
HttpsURLConnection conn = null;
DataOutputStream dos = null;
BufferedReader br = null;
try {
logger.info("send data :" + Aes.encrypt(postParams));
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier((HostnameVerifier) tm);
URL url = new URL(apiURL);
conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setConnectTimeout(CONNECT_TIMEOUT);
conn.setReadTimeout(READ_TIMEOUT);
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Content-Length",Integer.toString(postParams.getBytes().length));
//请求URL需要认证的用户名和密码
String password = PropertiesUtil.getString("es_password");
if( StringUtils.isNotBlank(username) && StringUtils.isNotBlank(password) ){
String encoding = new String(Base64.encode(new String(username + ":" + password).getBytes()));
conn.setRequestProperty("Authorization","Basic "+encoding);
}
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(postParams);
br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
logger.info("receive data :" + sb.toString());
return sb.toString();
}catch (Exception e) {
logger.error(e.getMessage());
e.printStackTrace();
}finally {
try{
if(dos != null) {
dos.close();
}
if(br != null) {
br.close();
}
if(conn != null) {
conn.disconnect();
}
}catch(Exception e){
logger.error(e.getMessage());
}
}
return null;
}
package com.ybs.essc.util;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
public class SSLTrustManager implements javax.net.ssl.TrustManager,
javax.net.ssl.X509TrustManager ,HostnameVerifier {
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public boolean isServerTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}
public boolean isClientTrusted(
java.security.cert.X509Certificate[] certs) {
return true;
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
@Override
public boolean verify(String urlHostName, SSLSession session) { //允许所有主机
return true;
}
}