You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让HtmlUnit 4.7.0忽略找不到的JavaScript文件(404错误)

如何让HtmlUnit 4.7.0忽略找不到的JavaScript文件(404错误)

嗨,我来帮你解决这个问题!你提到的旧方法setExceptionOnFailingStatusCode()确实在HtmlUnit 4.x版本里被移除了,不过我们有两种实用的方式来处理这类404错误,让你的程序继续正常运行。

方法一:全局忽略所有HTTP错误状态码

如果你不想因为任何HTTP错误(比如404、500这类状态码)而中断程序,可以直接给你的WebClient添加一行配置:

webClient.getOptions().setThrowExceptionOnHttpError(false);

设置完成后,HtmlUnit遇到404这类错误状态码时,就不会抛出FailingHttpStatusCodeException了,程序会继续执行后续的页面处理逻辑。这种方式简单快捷,适合不需要精细控制错误的场景。

方法二:精准拦截特定的404请求

如果你只想针对那个缺失的moment.min.js文件做处理,不想全局禁用错误抛出(避免漏掉其他重要的HTTP错误),可以自定义一个WebConnectionWrapper来拦截这个特定请求,返回一个空的成功响应。具体修改后的代码如下:

package pima101016140;

import org.htmlunit.*;
import org.htmlunit.html.*;
import java.io.IOException;

public class Pima101016140 {
    public static void main(String[] args) {
        try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX)) {
            java.util.logging.Logger.getLogger("org.htmlunit").setLevel(java.util.logging.Level.OFF);
            webClient.getOptions().setCssEnabled(false);
            webClient.getOptions().setThrowExceptionOnScriptError(false);
            
            // 自定义WebConnection拦截特定请求
            webClient.setWebConnection(new WebConnectionWrapper(webClient) {
                @Override
                public WebResponse getResponse(WebRequest request) throws IOException {
                    String targetUrl = "https://www.to.pima.gov/static/js/plugins/moment/2.24.0/moment.min.js";
                    if (request.getUrl().toString().equals(targetUrl)) {
                        // 返回一个空的200 OK响应,避免404异常
                        return new StringWebResponse("", request.getUrl());
                    }
                    // 其他请求按正常流程处理
                    return super.getResponse(request);
                }
            });
            
            HtmlPage page = webClient.getPage("https://www.to.pima.gov/propertyInquiry/?stateCode=101016140");
            // 这里可以添加你需要的页面处理逻辑
        } catch (Exception e) {
            System.out.println("Exception:  " + e.toString());
        }    
    }    
}

这种方式更灵活,只会处理你指定的那个404请求,其他HTTP错误依然会正常抛出,方便你排查其他潜在问题。

备注:内容来源于stack exchange,提问作者God's Gift To Java

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:03:01