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(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |