Ich versuche, XLS-Datei für eine Website herunterladen. Wenn ich auf den Link klicke, um die Datei herunterzuladen, erhalte ich ein Javascript-Bestätigungsfeld. Ich handle es wie untenDatei herunterladen mit HtmlUnit
ConfirmHandler okHandler = new ConfirmHandler(){
public boolean handleConfirm(Page page, String message) {
return true;
}
};
webClient.setConfirmHandler(okHandler);
Es gibt einen Link zum Download der Datei.
<a href="./my_file.php?mode=xls&w=d2hlcmUgc2VsbElkPSd3b3JsZGNvbScgYW5kIHN0YXR1cz0nV0FJVERFTEknIGFuZCBkYXRlIDw9IC0xMzQ4MTUzMjAwICBhbmQgZGF0ZSA%2BPSAtMTM1MDgzMTU5OSA%3D" target="actionFrame" onclick="return confirm('Do you want do download XLS file?')"><u>Download</u></a>
klicke ich auf den Link mit
HTMLPage x = webClient.getPage("http://working.com/download");
HtmlAnchor anchor = (HtmlAnchor) x.getFirstByXPath("//a[@target='actionFrame']");
anchor.click();
handeConfirm() -Methode excuted wird. Aber ich habe keine Ahnung, wie man den Dateistrom vom Server speichert. Ich habe versucht, den Stream mit dem Code unten zu sehen.
anchor.click().getWebResponse().getContentAsString();
Aber das Ergebnis ist das gleiche wie die Seite x. Weiß jemand, wie man den Strom vom Server erfasst? Vielen Dank.
'anchor.click()' eine Seite zurück. Das sollte Ihre XLS-Datei enthalten – Lee
siehe meine Antwort auf eine ähnliche Frage unter http://StackOverflow.com/a/28471835/612123 – culmat