Https繞過證書驗證


        HttpPost postRequest = null;
        StringEntity input = null;
        HttpResponse response = null;
        BufferedReader br = null;
        String output = null;
        int timeout=600000;
        HttpURLConnection httpURLConnection = null;
        OutputStream outputStream = null;

                String body = "";
                // 采用繞過驗證的方式處理https請求
                SSLContext sslcontext = createIgnoreVerifySSL();
                // 設置協議http和https對應的處理socket鏈接工廠的對象
                Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
                        .register("http", PlainConnectionSocketFactory.INSTANCE)
                        .register("https", new SSLConnectionSocketFactory(sslcontext)).build();
                PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
                HttpClients.custom().setConnectionManager(connManager);

                // 創建自定義的httpclient對象
                CloseableHttpClient client = HttpClients.custom().setConnectionManager(connManager).build();
                // CloseableHttpClient client = HttpClients.createDefault();
                try {
                    // 創建post方式請求對象
                    HttpPost httpPost = new HttpPost(strRestfulURL);
                    // 指定報文頭Content-type、User-Agent
//                    httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
//                    httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");
                    input = new UrlEncodedFormEntity("參數", "utf-8");
                    //input = new StringEntity(new String(IOUtils.toCharArray(objRequest.getInputStream())), "utf-8");
                    // 設置請求的內容
                    httpPost.setEntity(input);
                    
                    httpPost.setHeader(new BasicHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8"));
                    // 設置期望服務端返回的編碼
                    httpPost.setHeader(new BasicHeader("Accept","text/plain;charset=utf-8"));
                    // 執行請求操作,並拿到結果(同步阻塞)
                    CloseableHttpResponse response1 = client.execute(httpPost);
                    br = new BufferedReader(new InputStreamReader(
                            (response1.getEntity().getContent())));

                    while ((output = br.readLine()) != null) {
                        objResponse.getWriter().write(output);
                    }
                    objResponse.flushBuffer();
                    response1.close();
                    System.out.println("body:" + body);
                }catch( IOException e){
                    e.printStackTrace();
                } finally {
                    client.close();
                }


    public static  SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
        SSLContext sc = SSLContext.getInstance("SSLv3");

        // 實現一個X509TrustManager接口,用於繞過驗證,不用修改里面的方法
        X509TrustManager trustManager = new X509TrustManager() {
            @Override
            public void checkClientTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
                    String paramString) throws CertificateException {
            }
            @Override
            public void checkServerTrusted(java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
                    String paramString) throws CertificateException {
            }
            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }
        };
        sc.init(null, new TrustManager[] { trustManager }, null);
        return sc;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM