public class HttpUtils {


    /*
     * HTTPS忽略证书验证,防止因证书算法不符合约束条件,使用继承X509ExtendedTrustManager的方式
     */
    public static class VulX509TrustManager extends X509ExtendedTrustManager {

        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
        }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }

        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1, Socket arg2) throws CertificateException {
        }

        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1, SSLEngine arg2)
                throws CertificateException {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1, Socket arg2) throws CertificateException {
        }

        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1, SSLEngine arg2)
                throws CertificateException {
        }
    }



    private static SSLContext X509TrustManagerIgnoreCertificate() {
        TrustManager[] tm = { new VulX509TrustManager() };
        SSLContext ctx = null;
        try {
            ctx = SSLContext.getInstance("TLS");
            ctx.init(null, tm, null);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ctx;
    }

    private static final class SslContextInstanceHolder {
        static final SSLContext sslContextInstance = X509TrustManagerIgnoreCertificate();
    }

    public static SSLContext getSslContextIgnoreCertInstance() {
        return SslContextInstanceHolder.sslContextInstance;
    }
url = new URL(url);//eg:url=https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar
File file = new File(filePath);//下载的目标位置eg filePath=E:\plexus-utils-3.0.15.jar
InetSocketAddress addr = new InetSocketAddress("xxx.xx", 端口号); // proxy
proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
HttpsURLConnection urlOnnection = (HttpsURLConnection) url.openConnection(proxy);
                SSLContext sslContextIgnoreCertInstance = HttpUtils.getSslContextIgnoreCertInstance();
                urlOnnection.setSSLSocketFactory(sslContextIgnoreCertInstance.getSocketFactory());
                urlOnnection.setHostnameVerifier(new HostnameVerifier() {
                    @Override
                    public boolean verify(String arg0, SSLSession arg1) {
                        return true;
                    }
                });
InputStream inputStream = urlOnnection.getInputStream();
FileUtils.copyInputStreamToFile(inputStream, file);
//至此,下载成功,位置在filePath
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐