Hallo zusammen!
Mein erster Beitrag hier und gleich sowas... also, folgender Sachverhalt:
In einigen Maildokumenten verschiedener User/innen befinden sich im Body bestimmte URLs (als URL-Hotspot), die ich mittels JAVA Agent "erkenne" und als String-Array speichere.
Hinter jeder der URLs (z. B: "http://{THE-DOMAIN}:8081/?sGet&UCfX1aAlZUXQoBalRMy8wME0wNQw%3D") verbirgt sich jeweils eine Datei (unterschiedlichste Mime types vorhanden, z.B. PDF, DOC, GIF, JPG, AVI usw...) auf einem HTTP-Server, die ich nun herunterladen und lokal ablegen möchte. Dazu sei gesagt, dass der ausliefernde HTTP-Server im hausinternen Netzwerk zur Verfügung steht (also nicht etwa nach draußen über Proxy, Firewall in's weite WWW).
Das Problem besteht nun darin, dass beim Schritt "Herunterladen" der JAVA Agent (wird manuell auf meinem Client ausgeführt) die nachfolgende Exception
[1] wirft. Anbei ist auch ein Auszug der aufgerufenen Methode
[2] "saveURL", welche das Herunterladen der Datei durchführen soll.
Rufe ich nun z.B. eine der URLs (z. B: "http://{THE-DOMAIN}:8081/?sGet&UCfX1aAlZUXQoBalRMy8wME0wNQw%3D") von Hand im Browser auf, so wird die Datei heruntergeladen.
Übrings: Das gleiche (!) Programmcoding des Agents funktioniert, wenn ich das Coding in meiner "echten" JAVA-Entwicklungsumgebung (der IBM RAD) eingebe und ausführe. Die selbe URL wie aus dem Notes Client Beispiel funktioniert und die Dateien werden erfolgreich heruntergeladen!
Wer hat eine Idee, woran es liegen könnte?!
Schon erfolglos getestet:
Der Agent selbst ist sicherheitstechnisch so eingestellt, dass er auf "(3) Beschränke Operationen mit Admin-Rechten zulassen" eingestellt ist. Klappt auch nicht.
Sonstige Angaben:
Windows 7 Enterprise SP 1
Notes Client & Designer 8.5.3FP6
JAVA Version 1.6
[1] EXCEPTION (Console output):
-- 1 --
-- 2 --
URLConnection --> COM.ibm.JEmpower.applet.http.HttpURLConnection:http://{THE-DOMAIN}:8081/?sGet&UCfX1aAlZUXQoBalRMy8wME0wNQw%3D
-- 3 --
java.lang.NullPointerException
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:727)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:654)
at COM.ibm.JEmpower.applet.http.HttpURLConnection.getInputStream(HttpURLConnection.java:411)
at COM.ibm.JEmpower.applet.http.HttpURLConnection.getHeaderField(HttpURLConnection.java:692)
at java.net.URLConnection.getHeaderFieldInt(URLConnection.java:603)
at java.net.URLConnection.getContentLength(URLConnection.java:498)
at JavaAgent.saveURL(Unknown Source)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
[2] METHODE (JAVA coding):
private void saveURL(String sURL, String destDir, String filename) throws IOException {
System.out.println("-- 1 --");
URL u = new URL(sURL);
System.out.println("-- 2 --");
URLConnection uc = u.openConnection();
System.out.println("URLConnection --> " + uc);
System.out.println("-- 3 --");
int contentLength = uc.getContentLength(); // <-- HIER EXCEPTION!
System.out.println("-- 4 --");
InputStream raw = uc.getInputStream();
System.out.println("-- 5 --");
InputStream in = new BufferedInputStream(raw);
System.out.println("-- 6 --");
byte[] data = new byte[contentLength];
int bytesRead = 0;
int offset = 0;
System.out.println("-- 7 --");
while (offset < contentLength) {
bytesRead = in.read(data, offset, data.length - offset);
if (bytesRead == -1)
break;
offset += bytesRead;
}
System.out.println("-- 8 --");
in.close();
raw.close();
if (offset != contentLength) {
throw new IOException("[**ERROR**] Only read " + offset + " bytes; Expected " + contentLength + " bytes!");
}
System.out.println("-- 9 --");
FileOutputStream out = new FileOutputStream(destDir + "/" + filename);
out.write(data);
out.flush();
out.close();
}
Danke schon mal... !