Domino 9 und frühere Versionen > ND7: Entwicklung

URLDownloadToFile() lädt nur, wenn Website zuvor geöffnet wurde

<< < (6/9) > >>

flaite:
Hallo Silke,

unten ist die neue Version.
Wie gehabt entpacken und die jars in das leere lib Verzeichnis.

Unter bin gibts jetzt eine Datei settings.properties

url=http://www.google.de
clazz.processReturn=de.aja.docall.ProcessReturnString
clazz.prepareCall1=de.aja.preparecall.PrepareCallBaseReverseProxy
proxyHost=127.0.0.1
proxyPort=8080
proxyUser=axel
proxyPwd=test

Hinter die Proxy Werte trägst Du deine Werte ein. Die restlichen Zeilen so lassen wie sind.
Es wird nicht funktionieren, wenn euer Reverse Proxy NTLM Authentifizierung. Das ist aber eher selten.
In die url kannst Du später deine URL eintragen, allerdings gibts zur Zeit kein Handler, der Dateien verarbeitet. Der schreibt aktuell einfach den Return vom remote Webserver als String raus. Ist aber kein Problem. Vielleicht schreib ich das heute abend noch. So kannst Du zumindest testen, ob Du nach draussen kommst.
Den Proxy-Code konnte ich nicht testen, weil ich keinen Proxy hab. Sollte aber funktionieren, sofern nicht NTLM Authentifizierung benutzt wird.

Neuer Startbefehl. Wieder aus dem bin Verzeichnis

java -cp ../lib/commons-httpclient-3.1.jar;../lib/commons-logging-1.0.4.jar;../lib/commons-codec-1.2.jar;. de.aja.main.CommandManager

FALLS JEMAND ANDERS DAS MAL AUSPROBIERT und keinen Proxy hat:
Einfach in settings.properties vor clazz.prepareCall1=de.aja.preparecall.PrepareCallBaseReverseProxy ein Gatterzeichen setzen.
Also
#clazz.prepareCall1=de.aja.preparecall.PrepareCallBaseReverseProxy

flaite:
Falls dieses Zeugs hier läuft, kannst Du es in einem Notes Java Agenten integrieren.
Das ist relativ einfach.
Dann hast Du 2 Optionen:
a) Du schreibst den ganzen restlichen Code in Java um. Das stell ich mir ohne Java-Kenntnisse relativ schwierig vor, obwohl die Java und LotusScript Apis sich kaum unterscheiden.
b) Du benutzt dieses Zeugs hier, um die PDF Dateien in einem Verzeichnis auf dem Rechner zu speichern und der LotusScript Agent bleibt wie er ist, er holt die Dateien halt nur auf diesem Verzeichnis. Damit entsteht eine gewisse Zeitverzögerung, aber oft ist das nicht so schlimm.

flaite:
Und diese Version läd ein PDF runter und schreibt es in ein Verzeichnis.

settings.properties

folderDest beschreibt den Ordner auf dem OS, in dem die Datei abgespeichert wird.
clazz.prepareCall1 hier nicht auskommentiert. D.h. es wird reverse Proxy benutzt.
clazzProzessReturn nun mit ProcessReturnStream (nicht mehr String)
proxy Werte natürlich wieder anpassen.

urlBase=http://www.digbib.org
urlDetail=/Kurt_Tucholsky_1890/Schloss_Gripsholm_.pdf
folderDest=D:/test/notes/
#clazz.processReturn=de.aja.docall.ProcessReturnString
clazz.prepareCall1=de.aja.preparecall.PrepareCallBaseReverseProxy
clazz.processReturn=de.aja.docall.ProcessReturnStream
proxyHost=127.0.0.1
proxyPort=8080
proxyUser=axel
proxyPwd=test

Man kann aber auch wieder zur Lösung oben zurück (String wird ausgegeben). Dafür einfach die clazz.processReturn auskommentieren und bei der anderen das # wegnehmen. (Gatterzeichen ist Kommentarzeichen).
Das meinte ich mit "modularer Lösung".
Bei einem pdf machts nur halt keinen Sinn das als String auszugebren.
Später erweitere ich das noch damit, dass man auch Http-POST Methoden benutzen kann. Zur Zeit ist alles GET.
Auch Authentizifizierung beim entfernten Host, SSL, Cookies läßt sich alles einbauen.

Silke Wolf:
Hallo Axel,

Wow! -  es geht (sowohl mit zip3 als auch mit zip4 [PDF wurde erzeugt].

Ich werde es jetzt mal mit meinen Depatisnet-Links versuchen.

Gruß Silke

Silke Wolf:
Jetzt habe ich mal meinen Link eingefügt.
Zuvor habe ich die Depatisnetseite einmal von Hand im IE geöffnet - könnte aber sein, dass das nicht hilft, weil dein Java-Code das nicht registriert. Vielleicht muß er zuvor auch einfach nur einmal die Seite http://depatisnet.dpma.de/ ansprechen?

Mein Link: http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE03003827T1

In Datei "settings.properties" folgende Änderung vorgenommen

urlBase=http://depatisnet.dpma.de/DepatisNet/
urlDetail=depatisnet?action=textpdf&docid=DE03003827T1
folderDest=C:/textpdf/

Wobei ich verschiedenste Varianten meines Links auf die ersten beiden Zeilen vorgenommen habe, was jedoch an der Ausgabe nichts verändert hat.

Z.B.:
urlBase=http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE03003827T1
urlDetail=

Proxy-Infos und Login-Daten haben ich in der Ausgabe ausgeixt (XXXXX):

No further prepareCall objects found. Last index was: 2
PrepareCallBaseReverseProxy called
Will call proxy with XXXXX:XXXXX->XXXXX/XXXXX
25.11.2011 08:48:13 org.apache.commons.httpclient.HttpMethodDirector authenticateHost
WARNUNG: Required credentials not available for BASIC <any realm>@depatisnet.dpma.de:80
25.11.2011 08:48:13 org.apache.commons.httpclient.HttpMethodDirector authenticateHost
WARNUNG: Preemptive authentication requested but no default credentials available
Exception in thread "main" org.apache.commons.httpclient.CircularRedirectException: Circular redirect to 'http://depatisnet.dpma.de:80/DepatisNet/depatisnet'
        at org.apache.commons.httpclient.HttpMethodDirector.processRedirectResponse(HttpMethodDirector.java:638)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:179)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
        at de.aja.main.HttpClientInvoker.invoke(HttpClientInvoker.java:50)
        at de.aja.main.DefaultHttpClientInvoker.doInvoke(DefaultHttpClientInvoker.java:24)
        at de.aja.main.CommandManager.action(CommandManager.java:60)
        at de.aja.main.CommandManager.main(CommandManager.java:83)

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln