2013-01-05 21 views
0

我试图用HTMLUnit获取此页面,但似乎HTMLUnit发生无限循环并崩溃。HTMLUnite无限循环stackoverflow

我一直试图找到原因,但我放弃了。 我想:

  • 从SVN获取的HtmlUnit最新的代码
  • 使用不同浏览器
  • 尝试调试,但我找不到原因。

如果我使用 webClient.setJavaScriptEnabled(假);

我可以得到的网站,但重要的脚本没有执行。所以,问题是关于JavaScript。

这里运行循环一个示例代码:

String url = "http://www.tjpe.jus.br/processos/consulta1grau/oleConsultaProcesso.asp? 
nume=0&modalidade=6"; 

    final List collectedAlerts = new ArrayList(); 
    final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17); 
    webClient.setThrowExceptionOnScriptError(false); 
    webClient.setAlertHandler(new CollectingAlertHandler(collectedAlerts)); 
    webClient.waitForBackgroundJavaScript(10000); 
    webClient.waitForBackgroundJavaScriptStartingBefore(10000); 
    try { 
     final HtmlPage page1 = webClient 
     .getPage(url); 

     page1.asXml(); 
    } catch (FailingHttpStatusCodeException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

这里是错误:

Jan 4, 2013 11:39:05 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 
WARNING: Obsolete content type encountered: 'application/x-javascript'. 
Jan 4, 2013 11:39:05 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify 
WARNING: Obsolete content type encountered: 'application/x-javascript'. 
Jan 4, 2013 11:39:43 PM com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine  
handleJavaScriptException 
INFO: Caught script exception 
======= EXCEPTION START ======== 
Exception class=[java.lang.RuntimeException] 
com.gargoylesoftware.htmlunit.ScriptException: Exception invoking go 
at 
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run 
(JavaScriptEngine.java:665) 
at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:587) 
at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call 
(ContextFactory.java:534) 

... 

Caused by: java.lang.StackOverflowError 
at java.lang.reflect.Method.copy(Unknown Source) 
at java.lang.reflect.ReflectAccess.copyMethod(Unknown Source) 

.... 

    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:432) 
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:307) 
======= EXCEPTION END ======== 

,我使用的网址是公开的话,可以自由访问它。

请,如果有人能帮助我,我很感激。

回答

0

看起来您试图访问的URL有一些Java脚本错误。尝试

webClient.setThrowExceptionOnScriptError(false); 
+0

嗨,感谢您的帮助,但我认为您没有看到我仍在使用您的建议,但没有任何效果。 – IOSJR