如何使用Java无头浏览器HtmlUnit自动提交表单

问题描述 投票:0回答:1

我对 HtmlUnit 很陌生,但我在这里尝试做的事情如下

我们有一个水晶服务器,我们需要调用它来获取报告

我们正在使用从水晶服务器公开的 Restful API 来获取报告

在获取文档的过程中,shell 没有直接 API 来获取报告

因此,我们从 API 端点之一获得了最终链接,通过在常规浏览器中打开该链接,它会在大约三个不同的重定向后加载 pdf 文档

所以我试图使用 HtmlUnit 库在 java 中实现这种浏览器行为

try (final WebClient webClient = new WebClient()) {
    webClient.getOptions().setJavaScriptEnabled(true);
    webClient.getOptions().setThrowExceptionOnScriptError(false);
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
    webClient.getOptions().setRedirectEnabled(true);
    htmlPage = webClient.getPage(linkString);
}

在此之前我将进行第二次重定向,但不会重定向到文档本身。

关于如何归档文档最后一页有什么建议吗?

我是否需要捕获最终结果并使用新的网络客户端再次执行第三次调用,或者是否有任何简单的方法来实现最终页面

java crystal-reports htmlunit headless-browser opendocument
1个回答
0
投票

我不知道getPage()的确切含义,获取一个可以查询或修改的DOM列表?或者获取PDF文档数据?不同的结果决定不同的处理方式。

如果我遇到像你这样的问题,我会这样做:

1.通过反复重定向找到最终路径。

2.使用Http工具以正确的请求方式调用路径。

3.从http body获取数据(可能是Blog、JSON等)。

4.通过Apache PDFBox等开源库将数据转换为PDF文件

然后你就会得到你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.