Java 通过HtmlUnit下载CSV并读入阵列

Java 通过HtmlUnit下载CSV并读入阵列,java,htmlunit,Java,Htmlunit,我有一个页面,有一个按钮,可以下载CSV文件格式的信息。该按钮打开确认对话框以下载文件。我需要将该文件存储到临时位置(无论是内存还是保存到实际文件,然后删除),然后将CSV中的数据读取到数组中 我在这些问题(、、和)中尝试了这些代码,但这并不是我所需要的-主要是因为他们没有下载CSV并使用其中的数据 我不确定ConfirmDialog是否正在打开,但我添加了一个ConfirmHandler返回true以尝试下载该文件。然而,我不知道文件在哪里下载,如果它是在所有 以下是我遇到的情况和我遇到的困难

我有一个页面,有一个按钮,可以下载CSV文件格式的信息。该按钮打开确认对话框以下载文件。我需要将该文件存储到临时位置(无论是内存还是保存到实际文件,然后删除),然后将CSV中的数据读取到数组中

我在这些问题(、、和)中尝试了这些代码,但这并不是我所需要的-主要是因为他们没有下载CSV并使用其中的数据

我不确定ConfirmDialog是否正在打开,但我添加了一个
ConfirmHandler
返回
true
以尝试下载该文件。然而,我不知道文件在哪里下载,如果它是在所有

以下是我遇到的情况和我遇到的困难:

我登录很好。我去一个报告生成器。我生成一个在新窗口中打开的报告。新窗口打开得很好,我用
WebWindowListener
捕捉到它。然后在新窗口上搜索“另存为CSV”按钮。我可以找到它,我可以点击它,但是一个
System.out.print
调用显示
ConfirmHandler
没有启动

for (DomElement e : newPage.getElementsByTagName("button")) {
    int i = 0;
    webClient.setConfirmHandler(new ConfirmHandler() {
        private static final long serialVersionUID = 1L;
        @Override
        public boolean handleConfirm(Page arg0, String arg1) {
            System.out.println("Test"); //isn't firing
            return false;
        }
    });
    if (((HtmlButton) e).getAttribute("onclick").contains("CSV")) {
        ((HtmlButton) e).click();
    }else {
        if (i++ == (newPage.getElementsByTagName("button").size() - 1)) throw new AssertionError("CSV button not found");
    }
}

这个答案的灵感来自于

我真的想在不下载文件的情况下获得CSV信息,因此我在我的
webWindowListener
webWindowContentChanged(arg0)
方法中,只使用了
arg0.getWebWindow().getEnclosuringPage().getWebResponse().getContentAsString()
,然后使用了
String.split()
几次来获取我想要的信息

下面是代码的外观,因此更清晰一些:

webClient.addWebWindowListener(new WebWindowListener() {

    @Override
    public void webWindowContentChanged(WebWindowEvent arg0) {
        if (CSVclicked) {           //boolean that is set true when I click the download button...
            String CSV = arg0.getWebWindow().getEnclosedPage().getWebResponse().getContentAsString();

            //do things...

            CSVclicked = false; //don't use the same behavior next time the method is called...
        }
    }
});

很抱歉,我们需要有关您的问题的更多详细信息。通过确认对话框是否有问题?更新了我的问题。谢谢,我忘了提到确认对话框。