DownloadHelper
Java bietet mächtige Möglichkeiten, wenn es um die Kommunikation mit Servern geht. Dummerweise bietet es keine einfachen Möglichkeiten. Aus diesem Grund habe ich für mich schon vor einiger Zeit eine Hilfsklasse gebaut, die die kommunikation mit normalen Webservern erleichtert. Sie besteht aus folgenden Funktionen:
- installCookieManager(): Installiert den enthaltenen CookieManager in die VM, der automatisch alle Cookies im Hintergrund behandelt, für Seiten, die Beispielsweise ein Login erfordern. Muss nur einmal (pro Programm) aufgerufen werden, am Besten im main().
- downloadPage(): Ladet eine normale Webseite herunter und gibt das Ziel-HTML als ArrayList<String> zurück.
- downloadFile(): Lädt eine Datei herunter.
- sendPOST(): Schickt eine POST-Parameterliste an die Zielseite und gibt die Antwort als ArrayList<String> zurück.
- sendFileUsingPOST(): Lädt eine Datei per POST hoch in derselben Art, wie es ein Upload-Formular auf einer Webseite tun würde.
- disableHTTPSCertificateValidation(): Lässt alle HTTPS-Zertifikate zu (Mit Vorsicht zu geniessen). Alle Methoden vom DownloadHandler funktionieren auch mit HTTPS, wenn das Zertifikat zum Java-Keystore hinzugefügt wurde - mit dieser Funktion wird jedem Zertifikat vertraut, was gefährlich ist. Siehe Javadoc der Funktion für genauere Infos zum Zertifikathinzufügen und so.
Beispiel:
ArrayListanswer = null; try { // download a page. page to download/no referer/default user agent/timeout (5 sec)/3 retries answer = klaue.DownloadHelper.Downloader.downloadPage(new URL("http://www.xkcd.com/"), null, null, 5000, 3); } catch (Exception e) { e.printStackTrace(); } if (answer == null) { System.out.println("some error happened"); } else { System.out.println("Downloaded page:"); // print out first 6 lines for (int i = 0; i < 6; ++i) { System.out.println(answer.get(i)); } }
Ergibt:
Downloaded page: <?xml version="1.0" encoding="utf-8" ?> <?xml-stylesheet href="/static/general.css" type="text/css" media="screen" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>xkcd - A webcomic of romance, sarcasm, math, and language - By Randall Munroe</title>
Download (Source & Classes): DownloadHelper.jar
