Domino 9 und frühere Versionen > ND7: Entwicklung
URLDownloadToFile() lädt nur, wenn Website zuvor geöffnet wurde
flaite:
Hallo Silke,
das wäre kein Problem.
Es gibt aber ein anderes Problem:
Wenn ich mit dem Browser die URL http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE03003827T1 aufrufe, werde ich auf eine andere Seite geleitet.
Beim 2. Aufruf gibt er dann das PDF zurück.
Mit Firebug sieht das extrem so aus, dass er beim ersten Aufruf ein jsessionid Cookie setzt und es dann beim zweiten Aufruf mit dieser Session geht.
Nicht unlösbar, erhöht aber die Komplexität.
Schau mir das in ein paar Stunden mal mit wire-shark und dem Java Code an.
Gruß Axel
Silke Wolf:
Wie gesagt, in Excel rufe ich einmal von Hand nur die Seite "http://depatisnet.dpma.de/" auf, danach kann ich dann im Hintergrund die PDFs ziehen.
Dafür stelle nur die Nummern (können tausende Nummern sein) in einer Excel-Datei zur Verfügung, z.B. DE03003827T1 usw., setzen den Link zusammen, z.B. http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE03003827T1 usw und den Dateinamen und Pfad zum Abspeichern, z.B. C:\textpdf\DE03003827T1_text.pdf usw.
Das mit der Session-ID ist klar, aber Excel kriegt das gebacken.
Ich habe in Lotus Notes eine Ansicht, in der mir nur die Dokumente angezeigt werden, wo dieses Text-PDF fehlt. Über eine Schaltfläche exportiert er mir alle Schutzrechtsnummern in eine Textdatei.
In Excel lese ich die Textdatei ein (pro Nummer eine Zeile) und generiere gleichzeitig den Ausgabepfad samt Dateinamen. Anschließend gehe ich einmal manuell auf die Depatisnet-Seite. Dann starte ich per VB-Code in Excel den Dateidownload.
Anschließend gehe ich wieder ins Notes und per Schaltfläche starte ich den Import der heruntergeladenen Dateien in die entsprechenden Dokumente.
flaite:
Silke,
Das hat mich jetzt ein wenig beunruhigt, aber es gibt kein Grund zur Panik.
Erstmal ein paar Überlegungen, auch falls jemand mitliest.
Wenn das Cookie nicht gesetzt ist, gibt es einen HTTP Status code 302 als Antwort.
Als Antwort auf die redirect Antwort des Browsers schickt der Server diese html Seite, in der steht steht: Herzlich willkommen zur Recherche in den Datenbeständen des DEPATIS-Systems
Wenn das Cookie gesetzt ist, gibts direkt das PDF zurück, ohne redirect.
Ich müßte follow-redirects ausschalten und den HTTP-Statuscode auslesen und bei einem 300er
a) den Cookie auslesen, oder falls keiner gesendet wird
b) die "http://depatisnet.dpma.de/" anfordern, weil da steht der Cookie definitiv im Response Header vom GET
c) der Wert des Cookies im Property File abspeichern und einen neuen PDF - Request mit Cookie starten.
Folge-Calls können dann den im properties file gespeicherten cookies-Wert nutzen, solange der gültig ist.
Muß noch geklärt werden, was bei einem ungültigen Cookie geschieht. Denke aber dasselbe wie wenn kein Cookie gesetzt ist. Würd man also noch mal den obigen a)b)c) Prozess durchlaufen.
Bis Montag ist das vermutlich fertig.
Ich hab das öfters gemacht und die Intention hiervon ist, das mit den Erfahrungen einmal richtig zu machen, d.h. praktisch eine openSource Lösung, die sehr modular und erweiterbar ist, und für möglichst viele Einsatzgebiete ohne viel Programmier-Aufwand anpassbar ist. In diesem Sinne ist dein Input wertvoll, Silke.
Fühl Dich durch nix verpflichtet: mein vermeintlicher Aufwand, etc. Aber falls Bedarf besteht und ihr dafür Budget habt, könnt ihr mich auch tageweise als Consultant buchen. Gilt natürlich auch für alle anderen, die das Zeugs nutzen wollen.
Hab vor das irgendwo in google oder auf sourceforge als openSource Projekt zu veröffentlichen.
--- Zitat ---aber Excel kriegt das gebacken.
--- Ende Zitat ---
Meine Grube hier ist ja eine ganz andere Baustelle. Excel kostet Lizenzgebühren und profitiert von gewaltigen Skalenerträgen (i.S. von Economies of Scale). Microsoft lebt ja unter anderem davon, dass ihre verschiedenen Produkte so tief integriert sind. Die haben das da irgendwann reinprogrammiert, Lotus nicht.
Ich arbeite hier mit einer Implementierung des HTTP Protokolls namens apache jakarta HTTPClient, eine anwendungs-entferntere und protokoll-nähere Schicht. Es ist schon eine Abstraktion. Wenn ich mir das in dem Netzwerk-Sniffer wireshark anschaue geht darunter noch eine Menge mehr vor. Arbeit, die mir jakarta HTTPClient abnimmt.
lG
Axel
flaite:
Hallo Silke,
am besten du entpackst das unten in einen neuen Ordner.
Als nächstes kopierst Du die vorher von dir heruntergeladenen jars von dem alten lib Verzeichnis ins neue.
Zunächst mußt Du noch eine weitere Datei herunterladen, die wieder fürs Lib-Verzeichnis bestimmt ist.
http://mirrors.ibiblio.org/pub/mirrors/maven2/log4j/log4j/1.2.16/log4j-1.2.16.jar
Im lib Verzeichnis befinden sich nun diese 4 Dateien mit genau diesen Namen
commons-httpclient-3.1.jar
commons-logging-1.0.4.jar
commons-codec-1.2.jar
log4j-1.2.16.jar
Wenn nicht, benenn sie entsprechend um.
Im bin des neuen entpackten zip befindet sich eine bat namens setClasspath.bat
Ruf die als erstes aus der cmd-Box auf.
Dann kannst Du die Datei debatisCommon.properties in bin mit deinen Werten füllen, d.h. Werte für den Proxy und für den Ordner, in dem die PDF Dateien landen sollen.
Als nächstes startest Du mit
java de.aja.main.TestDebatis
Programm wird zunächst keine cookies.properties Datei vorfinden und besorgt sich das Cookie von der http://depatisnet.dpma.de/
Dann schreibt es eine cookies.properties Datei. (findest Du im bin Verzeichnis)
Sofort versucht es dann das PDF mit dem Cookie runterzuladen.
Beim nächsten Versuch wird die http://depatisnet.dpma.de nicht mehr aufgerufen, solange das Cookie gültig ist.
Wenn das Cookie ungültig geworden ist, holt sich das Programm ein frisches Cookie und schließt damit dann den download erfolgreich ab.
Du kannst das simmulieren, indem Du zwischen 2 Aufrufen den Inhalt von cookies.properties ein wenig veränderst. Etwa .dp-app02 statt .dp-app06 oder was immer da steht.
Sofern das erfolgreich läuft, kann ich Dir erklären, wie man das ganze in einen Notes Agenten einbindet.
Bei mir läuft es gut.
Gruß Axel
Silke Wolf:
Hallo Axel,
wenn ich jetzt bei dir um die Ecke wäre, würde ich dich jetzt aus dem Bett klingeln und zum Frühstück einladen :-*.
Die Datei wurde erfolgreich heruntergeladen.
Es wäre auch gut, wenn das Passwort für den Intnetzugang verschlüsselt wäre. Er liegt ja lesbar in der Datei und da ist mir nicht ganz wohl dabei. Meinst du, dass du dafür auch noch eine Lösung hättest?
Und wie binde ich das ganze nun in Notes ein?
LG Silke
p.s. bin fast ein wenig neidisch auf dein Können >:D
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln