使用HtmlUnit时找不到404

Jac*_*000 2 htmlunit

我有以下代码:

WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://www.myland.co.il/%D7%9E%D7%97%D7%A9%D7%91-%D7%94%D7%A9%D7%A7%D7%99%D7%94");
Run Code Online (Sandbox Code Playgroud)

代码失败,出现com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException:404找不到http://www.myland.co.il/Scripts/swfobject_modified.js

我确实在控制台输出中看到了我感兴趣的HTML页面.有没有办法来抑制异常并获得一个Html页面呢?该页面在真实浏览器中正确加载.

Joa*_*son 8

是的,您可以使用setThrowExceptionOnFailingStatusCode来忽略失败的状态代码,例如;

WebClient webClient = new WebClient();
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
HtmlPage page = webClient.getPage("http://www.myland.co.il/%D7%9E%D7%97%D7%A9%D7%91-%D7%94%D7%A9%D7%A7%D7%99%D7%94");
Run Code Online (Sandbox Code Playgroud)

默认值通常为true,这会给出您正在描述的错误.

编辑:以防万一你运行旧版本,HtmlUnit早于2.11版本,setThrowExceptionOnFailingStatusCode可以在WebClient本身而不是返回的选项上调用getOptions().在2.11或更高版本中,您应该getOptions()如上使用.