Как получить JavaFx WebEngine, чтобы сообщить об ошибках подробно?

в JavaFx я могу прикрепить прослушиватель к load worker для webEngine, как это:

 webEngine.getLoadWorker().stateProperty().addListener(
      new ChangeListener<Worker.State>() {
      public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {                               
             System.out.println("webEngine result "+ newState.toString());
      }
  });

однако, если я попытаюсь загрузить документ в https адрес:

https://SomeLocalMachine.com:9443/jts/admin#action=com.ibm.team.repository.manageUsers

все, что я печатаю на консоли, это:

webEngine result READY
webEngine result SCHEDULED
webEngine result RUNNING
webEngine result FAILED

(тот же адрес https в Firefox или Chrome получает мне страницу входа)

тут кто-нибудь знает, как я могу получить более подробные отчеты из JavaFx WebEngine. Я не хочу просто знать, что это не удалось - мне нужно знать почему. Я могу!--18-->Угадай моя ошибка связана с SSL / certificate / HTTPS, но в настоящее время я в полной темноте о том, какая часть SSL вызвала его "сбой"

3 ответов


можно использовать com.sun.javafx.webkit.WebConsoleListener. Недостатком является то, что это внутренний API JRE.

WebConsoleListener.setDefaultListener(new WebConsoleListener(){
    @Override
    public void messageAdded(WebView webView, String message, int lineNumber, String sourceId) {
        System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message);
    }
});

вы пробовали следующее:

engine.getLoadWorker().exceptionProperty().addListener(new ChangeListener<Throwable>() {
    @Override
    public void changed(ObservableValue<? extends Throwable> ov, Throwable t, Throwable t1) {
        System.out.println("Received exception: "+t1.getMessage());
    }
});

лучшее, что мы когда-либо получил, был:

if (webEngine.getLoadWorker().getException() != null && newState == State.FAILED) {
    exceptionMessage = ", " + webEngine.getLoadWorker().getException().toString();
}

но это не помогло.

(наша ошибка была вызвана отсутствующим CookieStore, похоже, вы не получаете его бесплатно - и должны установить по умолчанию:http://docs.oracle.com/javase/7/docs/api/java/net/CookieHandler.html)