/**
* 请求https
* @Version 1.0.0
* @Description
*/
public class CustomX509TrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
https请求:
/**
* https请求
* @param requestUrl
* @param content
* @return
* @throws Exception
*/
public static String httpsRequest(String requestUrl,String content)throws Exception{
SSLContext sslContext = SSLContext.getInstance("SSL");
TrustManager[] tm = {new CustomX509TrustManager()};
sslContext.init(null, tm, new java.security.SecureRandom());
//获取SSLSocketFactory对象
SSLSocketFactory ssf=sslContext.getSocketFactory();
URL url=new URL(requestUrl);
HttpsURLConnection conn=(HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
//需要设置这些参数,否则参数传递不到https定义的接口中
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("content-Type", "application/json");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//conn.setUseCaches(false);
conn.setRequestMethod("POST");
//设置当前实例使用的SSLSoctetFactory
conn.setSSLSocketFactory(ssf);
conn.connect();
//往服务器端写内容
if(null!=content){
OutputStream os=conn.getOutputStream();
os.write(content.getBytes("utf-8"));
os.flush();
os.close();
}
//读取服务器端返回的内容
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is,"utf-8");
BufferedReader br=new BufferedReader(isr);
StringBuffer buffer=new StringBuffer();
String line=null;
while((line=br.readLine())!=null){
buffer.append(line);
}
return buffer.toString();
}