0

I am writing a simple piece of Java code, to check my external IP and update my DNS entries if it has changed.

I use NetBeans and HTMLunit. The first part of the code works OK. My code gets the proper External IP address from WhatIsMyIp.com

The second part, which involves logging into my DNS provider webpage (fastname.no) is attached below.

>  
>   public void LoginToDNS(HtmlPage LogInPage) throws Exception {
>     try (final WebClient webClient = new WebClient()) {
> 
>                     //get the webpage data we're looking for
>                     // also get the buttons and textfields
>                     final List<?> forms = LogInPage.getForms();
>                     final HtmlForm form = LogInPage.getFormByName("form1");        
>                     final HtmlTextInput UsernameField = form.getInputByName("username");        
>                     final HtmlPasswordInput PasswordField = form.getInputByName("password");
>                     final HtmlButton submit_button = form.getButtonByName("submit");
> 
>                     // Set the Username and pasword
>                     UsernameField.setValueAttribute("myusername");
>                     PasswordField.setValueAttribute("mypassword");
> 
>                     // submit the form by clicking the button and get back the control panel page
>                     final HtmlPage DNSPage = submit_button.click();
>                     CheckDNSEntries(DNSPage);
>                     
>         }
>     }


Although I can see that I have logged in properly (I know, because the page title changes to the correct one), I see an SSL error and the resulting webpage is not what I want.

java.util.concurrent.ExecutionException: java.io.IOException: Cannot init SSL
.... 
Caused by: java.io.IOException: Cannot init SSL
......
at org.eclipse.jetty.websocket.client.io.WebSocketClientSelectorManager.newConnection(WebSocketClientSelectorManager.java:96)

    ... 3 more

Right when I press the Submit_button, I see a hell of a lot of errors on the debugger coming from htmlunit. (see below)

Apr 12, 2016 10:36:49 AM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '*,:x' error: Invalid selector: :x).] sourceName=[https://www.fastname.no/panel/js/custom/bootstrap.js?bust=?v20160408110428] line=[66] lineSource=[null] lineOffset=[0]
Apr 12, 2016 10:36:49 AM com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '*,:x' error: Invalid selector: :x).] sourceName=[https://www.fastname.no/panel/js/custom/bootstrap.js?bust=?v20160408110428] line=[66] lineSource=[null] lineOffset=[0]
Apr 12, 2016 10:36:51 AM com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl runSingleJob
SEVERE: Job run failed with unexpected RuntimeException: [object Object] (https://www.googletagmanager.com/gtm.js?id=GTM-TWH4RS&bust=?v20160408110428#65)
======= EXCEPTION START ========
Exception class=[net.sourceforge.htmlunit.corejs.javascript.JavaScriptException]
com.gargoylesoftware.htmlunit.ScriptException: [object Object] (https://www.googletagmanager.com/gtm.js?id=GTM-TWH4RS&bust=?v20160408110428#65)


Apr 12, 2016 10:36:52 AM com.gargoylesoftware.htmlunit.javascript.background.JavaScriptJobManagerImpl runSingleJob
SEVERE: Job run failed with unexpected RuntimeException: [object Object] (https://www.googletagmanager.com/gtm.js?id=GTM-TWH4RS&bust=?v20160408110428#65)
======= EXCEPTION START ========
Exception class=[net.sourceforge.htmlunit.corejs.javascript.JavaScriptException]
com.gargoylesoftware.htmlunit.ScriptException: [object Object] (https://www.googletagmanager.com/gtm.js?id=GTM-TWH4RS&bust=?v20160408110428#65)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.handleJavaScriptException(JavaScriptEngine.java:982)
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:894)

2016-04-12 10:36:55.106:INFO::JS executor for com.gargoylesoftware.htmlunit.WebClient@d1a10ac: Logging initialized @10613ms
Apr 12, 2016 10:36:55 AM com.gargoylesoftware.htmlunit.javascript.host.WebSocket run
SEVERE: WS connect error
java.util.concurrent.ExecutionException: java.io.IOException: Cannot init SSL
    at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:123)
    at com.gargoylesoftware.htmlunit.javascript.host.WebSocket$1.run(WebSocket.java:130)

I am not quite sure whether this is a HTMLunit problem handling JavaScript or it's just my code. Is there a better solution that I can use instead of HTMLunit that will get me where I want to go faster? After all I think the task I want to accomplish is relatively simple.

1 Answers1

0

Try to enable SSL by adding:

webClient.getOptions().setUseInsecureSSL(true);

You can find more documentation here.

EDIT: In order to hide the HtmlUnit logs, you have to add this:

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
haihui
  • 1,075
  • 1
  • 18
  • 25
  • I have already inserted the code but Ι still get the SSL error. Copying and pasting the webpage's resulting HTML code and it seems that only the bottom frame is returned. The middle frame which is a sort of a javascript does not show – Genesis_GDK Apr 13 '16 at 14:06
  • Did you at least manage to hide all the HtmlUnit specific logs? – haihui Apr 14 '16 at 05:18
  • Yes I did. But the SSL error is not related to HTTP I guess. – Genesis_GDK Apr 15 '16 at 11:34