【问题标题】:com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 404 Not Found for https://tax.ocgov.com/includes/jquery-2.2.3.min.jscom.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 404 Not Found for https://tax.ocgov.com/includes/jquery-2.2.3.min.js
【发布时间】:2021-07-12 07:55:16
【问题描述】:

我正在尝试通过 HtmlUnit 在https://tax.ocgov.com/tcweb/search_page.asp 上查找有效的包裹编号,因此我使用了以下 for 循环:

for (Integer pID=34056101; pID<34056111; pID++) {
    HtmlPage page = webClient.getPage("https://tax.ocgov.com/tcweb/search_page.asp");
    String i = pID.toString();
    final HtmlForm form = page.getFormByName("searchparcel");
    final HtmlTextInput taxIDInput = form.getInputByName("t_parcel_no");
    final HtmlImageInput button = form.getInputByName("s_parcel");
    taxIDInput.type(i);

    final HtmlPage page2 = (HtmlPage) button.click();

    //System.out.println(page2.getUrl().getPath());
    if (page2.getUrl().getPath() == "/tcweb/search_parcel.asp")
        {writer.println(pID);}
    }

但是,我收到了这个错误:

com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 404 不是 找到https://tax.ocgov.com/includes/jquery-2.2.3.min.js

异常是由这行代码引起的:

final HtmlPage page2 = (HtmlPage) button.click();

我应该怎么做才能让我的程序正常运行?

【问题讨论】:

    标签: java http-status-code-404 htmlunit


    【解决方案1】:

    您正在使用的页面有很多问题 - 只需打开浏览器控制台并自己查看......

    开箱即用的 HtmlUnit 是为页面测试而编写的,因此与真实浏览器相比,此类错误的处理更加敏感。 但是你可以改变它。

    对我来说,这段代码有效:

    final String url = "https://tax.ocgov.com/tcweb/search_page.asp";
    
    try (final WebClient webClient = new WebClient()) {
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
    
        HtmlPage page = webClient.getPage(url);
        webClient.waitForBackgroundJavaScript(1000);
    
        final HtmlForm form = page.getFormByName("searchparcel");
        final HtmlTextInput taxIDInput = form.getInputByName("t_parcel_no");
        final HtmlImageInput button = form.getInputByName("s_parcel");
        taxIDInput.type("34056101");
    
        final HtmlPage page2 = (HtmlPage) button.click();
        webClient.waitForBackgroundJavaScript(1000);
    
        System.out.println("***********");
        System.out.println(page2.asNormalizedText());
        System.out.println("***********");
    
    }
    

    【讨论】:

    • 这两行代码解决了这个问题:webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);非常感谢@RBRi!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多