摘要:JAVA 忽略 HTTPS 驗證
這個問題,大概是出現在連線到測試機時,因為該測試機並沒有https驗證,但又要以https網址為開頭,
而連線過去的時候,由於該測試機並沒有第三方驗證,但又要讓他過關,所以才需要忽略https驗證。
這時候Java如果連到https,但沒忽略的話,會出現下面的Exception
	sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	為了這個問題Google了一下網路文章,下面這篇文章,寫的相當的話,因此,我使用他的方式。
	但用了最下面的方法,仍不可行。
	所以我兩個方法都用。
	就過關了。
	以下是兩個方法都加之後的程式碼方法。
    /**
         * 忽略驗證https
         */
    public static void igoreVerify() throws Exception
    {
        ignoreVerifyHttpsTrustManager();
        ignoreVerifyHttpsHostName();
    }
    /**
         * 忽略驗證https
         */
    public static void ignoreVerifyHttpsHostName()
    {
        HostnameVerifier hv = new HostnameVerifier()
        {
              public boolean verify(String urlHostName, SSLSession session)
              {
                     System.out.println("Warning: URL Host: "+urlHostName+" vs. "+session.getPeerHost());
                     return true;
              }
        };
        HttpsURLConnection.setDefaultHostnameVerifier(hv);
    }
    /**
         * 忽略驗證https
         */
    public static void ignoreVerifyHttpsTrustManager() throws Exception
    {
        TrustManager[] trustAllCerts = new TrustManager[] {
                new X509TrustManager(){
                    public java.security.cert.X509Certificate[] getAcceptedIssuers()
                    {
                            return null;
                    }
                    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)
                    {
                    }
                    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)
                    {
                    }
                }
        };
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    }