HtmlUnit从href调用javascript下载文件

HtmlUnit从href调用javascript下载文件,javascript,download,href,attachment,htmlunit,Javascript,Download,Href,Attachment,Htmlunit,我试图下载一个文件,似乎必须在浏览器中单击。该站点使用一个表单,其中有几个href,用于一个名为downloadFile的javascript函数。在此函数中,名为poslimit的元素由document.getElementById获取: function downloadFile(actionUrl, formId) { document.getElementById(formId).action=actionUrl; document.getElementById(form

我试图下载一个文件,似乎必须在浏览器中单击。该站点使用一个表单,其中有几个href,用于一个名为downloadFile的javascript函数。在此函数中,名为poslimit的元素由document.getElementById获取:

function downloadFile(actionUrl, formId)
{
    document.getElementById(formId).action=actionUrl;
    document.getElementById(formId).submit();
}
HTML源代码片段:

<form method="post" name="commandForm" action="position-limits" id="poslimit">
    <div id="content">
        <li><a href="javascript:downloadFile('position-limits?fileName=20130711&positionLimit=CURRENT_POSITION_LIMIT_', 'poslimit');" > July 11, 2013 </a></li>
还尝试使用HtmleElement 我还尝试:

WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
ScriptResult sr = page.executeJavaScript("downloadFile('position-limits?fileName=20130709&positionLimit=POSITIONLIMITCHANGE_', 'poslimit'");
InputStream is = sr.getNewPage().getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
    System.out.print((char)b);
}
webClient.closeAllWindows();

这两个都来自于这个和其他板上的示例,但我继续只获取原始页面,而不是附加文件。我还想知道是否需要查看历史记录以获得正确的页面响应,因为我需要的返回窗口/文档可能是上一个。非常感谢您提供完整的解释或优秀的示例文档以及我可以尝试的来源的有礼貌的链接。

因此我认为这可能会对其他人有所帮助,因为我还没有看到一个有效的示例

WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
HtmlAnchor anchor = null;
List<HtmlAnchor> anchors = page.getAnchors();
for (int i = 0; i < anchors.size(); ++i)
{
    anchor = anchors.get(i);
    String sAnchor = anchor.asText();
    // This date should come in from args
    if (sAnchor.equals("July 9, 2013"))
        break;
}
// This is not safe, need null check
Page p = anchor.click();
InputStream is = p.getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
    System.out.print((char)b);
}
webClient.closeAllWindows();
WebClient-WebClient=新的WebClient(BrowserVersion.CHROME_16);
HtmlPage=webClient.getPage(“http://www.theocc.com/webapps/position-limits");
HtmlAnchor anchor=null;
列表锚=page.getAnchors();
对于(int i=0;i

这个问题对我有点帮助,因为我尝试了锚的东西,它起了作用

因此,我认为这可能对其他人有所帮助,因为我还没有看到一个有效的例子

WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
HtmlAnchor anchor = null;
List<HtmlAnchor> anchors = page.getAnchors();
for (int i = 0; i < anchors.size(); ++i)
{
    anchor = anchors.get(i);
    String sAnchor = anchor.asText();
    // This date should come in from args
    if (sAnchor.equals("July 9, 2013"))
        break;
}
// This is not safe, need null check
Page p = anchor.click();
InputStream is = p.getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
    System.out.print((char)b);
}
webClient.closeAllWindows();
WebClient-WebClient=新的WebClient(BrowserVersion.CHROME_16);
HtmlPage=webClient.getPage(“http://www.theocc.com/webapps/position-limits");
HtmlAnchor anchor=null;
列表锚=page.getAnchors();
对于(int i=0;i

这个问题对我有点帮助,因为我尝试了锚的东西,它起了作用

HTML和我的代码中的日期不同,但可互换,因为每个日期都有几个href行。HTML和我的代码中的日期不同,但可互换,因为每个日期都有几个href行