/**
* 设置 https 请求
*
* @throws Exception
*/
private static void trustAllHttpsCertificates() throws Exception {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String str, SSLSession session) {
return true;
}
});
javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
javax.net.ssl.TrustManager tm = new miTM();
trustAllCerts[0] = tm;
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext
.getInstance("SSL");
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc
.getSocketFactory());
}
//设置 https 请求证书
static class miTM implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {
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;
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType)
throws java.security.cert.CertificateException {
return;
}
}
//====================================================================
//============================= 测试调用 ============================
//====================================================================
public static void main(String[] args) {
try {
//请求地址(我这里测试使用淘宝提供的手机号码信息查询的接口)
String address = "https://you url";
URL Url = new URL(address);
trustAllHttpsCertificates();
HttpURLConnection httpConnection = (HttpURLConnection) Url
.openConnection();
httpConnection.setConnectTimeout(TIMEOUT);
httpConnection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded;charset=" + ENCODING);
httpConnection.setDoOutput(true);
httpConnection.setDoInput(true);
BufferedInputStream bufferedInputStream = new BufferedInputStream(httpConnection.getInputStream());
byte[] bytes = new byte[1024];
String http = address.split("\\?")[0];
String name = URLDecoder.decode(http.substring(http.lastIndexOf("/") + 1));
File destFile = new File("C:\\web-server\\test", name);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destFile));
while (bufferedInputStream.read(bytes) != -1) {
bufferedOutputStream.write(bytes, 0, bytes.length);
}
bufferedInputStream.close();
bufferedOutputStream.close();
} catch (Exception e) {
// TODO 异常
e.printStackTrace();
}
}
java 网络流下载绕过ssl证书
于 2022-06-29 15:42:07 首次发布