package com.doumee.core.utils;
|
|
import org.springframework.http.HttpMethod;
|
|
import javax.net.ssl.*;
|
import java.io.*;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.security.KeyManagementException;
|
import java.security.NoSuchAlgorithmException;
|
import java.security.SecureRandom;
|
import java.security.cert.CertificateException;
|
import java.security.cert.X509Certificate;
|
|
public class HttpsUtil {
|
|
public static String get(String url,boolean ignoreSSL) {
|
return connection(url, "GET", null, null,ignoreSSL);
|
}
|
|
public static String post(String url, String data, String contentType, boolean ignoreSSL) {
|
return connection(url, "POST", data, contentType, ignoreSSL);
|
}
|
public static String postJson(String url, String data) {
|
if(url.startsWith("https://")){
|
return connection(url, "POST", data, "application/json", true);
|
}else{
|
return connectionHttp(url, "POST", data, "application/json");
|
}
|
}
|
|
public static String connection(String url,String method,String data,String contentType,boolean ignoreSSL){
|
HttpsURLConnection connection = null;
|
try {
|
URL _url = new URL(url);
|
connection = (HttpsURLConnection) _url.openConnection();
|
connection.setRequestMethod(method);
|
connection.setDoOutput(true);
|
connection.setDoInput(true);
|
connection.setUseCaches(false);
|
if(contentType != null){
|
connection.setRequestProperty("Content-Type", contentType);
|
}
|
|
if(ignoreSSL){
|
//信任所有ssl证书和主机
|
TrustManager[] trustManagers = {new HttpsTrustManager()};
|
SSLContext context = SSLContext.getInstance("TLS");
|
context.init(null, trustManagers, new SecureRandom());
|
connection.setSSLSocketFactory(context.getSocketFactory());
|
connection.setHostnameVerifier(new HostnameVerifier() {
|
@Override
|
public boolean verify(String hostname, SSLSession session) {
|
return true;
|
}
|
});
|
}
|
|
|
connection.connect();
|
|
if(data != null){
|
OutputStream outputStream = connection.getOutputStream();
|
outputStream.write(data.getBytes("utf-8"));
|
outputStream.close();
|
}
|
|
int responseCode = connection.getResponseCode();
|
if (responseCode == HttpsURLConnection.HTTP_OK) {
|
InputStream is = connection.getInputStream();
|
byte[] b = new byte[4096];
|
ByteArrayOutputStream baos = new ByteArrayOutputStream(b.length);
|
int len;
|
while ((len = is.read(b)) != -1) {
|
baos.write(b, 0, len);
|
}
|
is.close();
|
return baos.toString("utf-8");
|
}
|
return connection.getResponseMessage();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if(connection != null){
|
connection.disconnect();
|
}
|
}
|
return null;
|
}
|
public static InputStream connectionInputsteam(String url,String method,String data,String contentType ){
|
HttpURLConnection connection = null;
|
try {
|
URL _url = new URL(url);
|
connection = (HttpURLConnection) _url.openConnection();
|
connection.setRequestMethod(method);
|
connection.setDoOutput(true);
|
connection.setDoInput(true);
|
connection.setUseCaches(false);
|
if(contentType != null){
|
connection.setRequestProperty("Content-Type", contentType);
|
}
|
connection.connect();
|
if(data != null){
|
OutputStream outputStream = connection.getOutputStream();
|
outputStream.write(data.getBytes("utf-8"));
|
outputStream.close();
|
}
|
int responseCode = connection.getResponseCode();
|
if (responseCode == HttpsURLConnection.HTTP_OK) {
|
return connection.getInputStream();
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
// if(connection != null){
|
// connection.disconnect();
|
// }
|
}
|
return null;
|
}
|
public static String connectionHttp(String url,String method,String data,String contentType ){
|
HttpURLConnection connection = null;
|
try {
|
URL _url = new URL(url);
|
connection = (HttpURLConnection) _url.openConnection();
|
connection.setRequestMethod(method);
|
connection.setDoOutput(true);
|
connection.setDoInput(true);
|
connection.setUseCaches(false);
|
if(contentType != null){
|
connection.setRequestProperty("Content-Type", contentType);
|
}
|
|
connection.connect();
|
|
if(data != null){
|
OutputStream outputStream = connection.getOutputStream();
|
outputStream.write(data.getBytes("utf-8"));
|
outputStream.close();
|
}
|
|
int responseCode = connection.getResponseCode();
|
if (responseCode == HttpsURLConnection.HTTP_OK) {
|
InputStream is = connection.getInputStream();
|
byte[] b = new byte[4096];
|
ByteArrayOutputStream baos = new ByteArrayOutputStream(b.length);
|
int len;
|
while ((len = is.read(b)) != -1) {
|
baos.write(b, 0, len);
|
}
|
is.close();
|
return baos.toString("utf-8");
|
}
|
return connection.getResponseMessage();
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if(connection != null){
|
connection.disconnect();
|
}
|
}
|
return null;
|
}
|
|
|
public static void main(String[] args) throws IOException {
|
//局部信任所有证书和主机
|
InputStream result = HttpsUtil.connectionInputsteam(
|
"https://atwl.ahzyssl.com/zhyq_ftp/company_documents/20250630/e4205bc2-c5d3-48c7-ae2e-9690c009e481.txt",
|
"GET",null,null );
|
try (BufferedInputStream bufferedInputStream = new BufferedInputStream(result);
|
FileOutputStream outputStream = new FileOutputStream("D://temp.txt")) {
|
byte[] buffer = new byte[1024];
|
int bytesRead;
|
while ((bytesRead = bufferedInputStream.read(buffer)) != -1) {
|
outputStream.write(buffer, 0, bytesRead);
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
}
|
|
class HttpsTrustManager implements X509TrustManager {
|
|
private static TrustManager[] trustManagers = {new HttpsTrustManager()};
|
|
@Override
|
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
|
// TODO Auto-generated method stub
|
|
}
|
|
@Override
|
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
|
// TODO Auto-generated method stub
|
|
}
|
|
@Override
|
public X509Certificate[] getAcceptedIssuers() {
|
// TODO Auto-generated method stub
|
return null;
|
}
|
|
public static void allowAllSSL() {
|
try {
|
SSLContext context = SSLContext.getInstance("TLS");
|
context.init(null, trustManagers, new SecureRandom());
|
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
|
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
|
@Override
|
public boolean verify(String hostname, SSLSession session) {
|
return true;
|
}
|
});
|
} catch (NoSuchAlgorithmException | KeyManagementException e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|