2015-06-11 159 views
2

我想用JavaFX的WebView加載這個site,但我得到的只是一個空白屏幕。 WebView在其他網站上工作得很好;它在ACID3上獲得100/100並且無任何問題地加載其他HTTPS站點。JavaFX WebView無法加載某些網站

我無法找到任何與網站有什麼特別錯誤的地方。它有適當的,未過期的證書由適當的CA簽署,SSL實驗室報告a B grade。我嘗試了所有主要瀏覽器,但沒有報告任何證書或SSL相關的問題;該網站呈現所有這些罰款。

任何幫助將不勝感激。即使是一個簡單的「是的,這個網站也爲我打破了」或者「這裏沒有問題」,這對我們很有幫助。

我在Windows 8.1 64位上使用Java SDK 1.8.0_45-b14。

回答

4

原因是java.lang.Throwable: SSL handshake failed

一種解決方案可以是:從這篇文章https://stackoverflow.com/a/5671038/1032167

 TrustManager trm = new X509TrustManager() { 
     public X509Certificate[] getAcceptedIssuers() {return null;} 
     public void checkClientTrusted(X509Certificate[] certs, String authType) {} 
     public void checkServerTrusted(X509Certificate[] certs, String authType) {} 
    }; 

    SSLContext sc = SSLContext.getInstance("SSL"); 
    sc.init(null, new TrustManager[] { trm }, null); 
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 

另外也張貼,大概類似的案件:JavaFx Webview JDK 8 can not load self signed certificate

我怎麼知道它是SSL handshake failed

webView.getEngine().getLoadWorker().stateProperty().addListener(
      new ChangeListener<Worker.State>() { 
       public void changed(ObservableValue ov, 
         Worker.State oldState, Worker.State newState) { 
      System.out.println(webView.getEngine().getLoadWorker().exceptionProperty()); 
      ... 

也只需添加-Djavax.net.debug=all到VMOption顯示

URL-裝載機-1,處理異常:javax.net.ssl.SSLHandshakeException:

sun.security.validator.ValidatorException:PKIX路徑建設失敗:

sun.security.provider.certpath.SunCertPathBuilderException:

無法找到請求的目標的有效證書路徑