Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: bernino1 am 30.06.10 - 16:16:32

Titel: XML-Daten live von HTTP-Adresse einlesen!
Beitrag von: bernino1 am 30.06.10 - 16:16:32
Hallo,

ich biete einem externem Partner bestimmte Dokumente via Notes-View die XML-Daten darstellt auf unserem Domino-WebServer an.
Der Partner holt Sie dort ab wann er will!

Nun sollte ich das ganze auch umgekehrt realisieren.

Also:
Der Partner gibt mir eine http-Adresse unter der ich dann eine XML-Datenstruktur finde.
Diese sollte ich via LS-Agent oder sonstigem mehrmals täglich einlesen und zu Notes-Dokumenten verarbeiten.
(Also quasi direkt von der HTTP-Adresse zeilenweise streamen!?)

Wie ich die XML-Daten (wenn ich sie dann mal habe ;-) verarbeite ist mir klar.

Was ich nicht weiss ist - wie kann ich die Daten via LS oder DXL oder whatever vom Web-Server aus direkt von einer HTTP-Adresse abholen bzw. ist das überhaupt möglich??

Ich wäre für einen Lösungsansatz sehr dankbar.
Hab im Moment überhaupt keine Idee wie ich von einer HTTP-Adresse ein XML einlesen/streamen kann!!??

DANKE

PS
Nicht wundern - bin bis Montag 05-07-10 im Ausland und kann erst dann reagieren!
Titel: Re: XML-Daten live von HTTP-Adresse einlesen!
Beitrag von: pram am 30.06.10 - 17:21:05
Notes bietet mit Lotusscript keine Möglichkeit, URLs abzuholen. (Sofern man einen Webservice-Consumer nicht dazuzählt) Dies geht mit Bordmitteln nur mit Java. (und hier müssen ggf. auch die Sicherheitseinstellungen geändert werden)

Aber es geht z.B. über COM. Google mal nach "LotusScript XmlHttpRequest"
Die Datenmenge die du hier downloaden kannst, entspricht etwa 64k (der Arraygröße von LotusNotes) und ist u.U. nicht ausreichend.

Alternativ könntest du die Datei mit wget (gibts auch für Win) in ein Temp-Verzeichnis abspeichern und dann per Notes-File-Operationen einlesen.

Gruß
Roland
Titel: Re: XML-Daten live von HTTP-Adresse einlesen!
Beitrag von: bernino1 am 06.07.10 - 09:44:23
SUPER  -  DANKE  - GENAU  DAS  WARS!!!

Danke für den Tip - läuft tadellos und liefert mir eine XML-Struktur direkt von einer Url.

Das 64k Problem kannst du - natürlich nur unter Umständen - mit nem Loop umgehen der dir die Url Zeilenweise durchgeht!
Für meine Zwecke sind die 64k sicher ausreichend!

Beispiel: (Verwendet dafür die IE-API.)

Set objHttp = CreateObject("Microsoft.XMLHTTP")
url = |http://www.test.at/ttdaten.xml|
req = |API=Rate&XML=<RateRequest USERID="testuser@domain"
PASSWORD="testpw"><Package ID="notesserverID"><import clientID="0xx"><masterLists></masterLists></import clientID></Package>
</RateRequest>|

objHttp.open "POST", url, False, "", ""
objHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHttp.send(req) 'Request an WebServer übergeben!
response = objHttp.responseText
Set db = sess.Currentdatabase
Set hpdoc = New NotesDocument(db)
hpdoc.form = "xml_test"
hpdoc.response = response
Call hpdoc.save(True, False)
Set objHttp=Nothing
Titel: Re: XML-Daten live von HTTP-Adresse einlesen!
Beitrag von: pram am 06.07.10 - 13:24:53
Das 64k Problem kannst du - natürlich nur unter Umständen - mit nem Loop umgehen der dir die Url Zeilenweise durchgeht!
Für meine Zwecke sind die 64k sicher ausreichend!
Das verstehe ich nicht ganz. Wie meinst du "zeilenweise"? Das Problem ist, dass du in dieser Zeile:
   response = objHttp.responseText
einen Fehler bekommst, wenn der responseText > 64K ist.

Ich hab damals jedenfalls keine Möglichkeit gefunden, auf Teile der Resopnse zuzugreifen, falls diese > 64K war.

Aber freut mich, dass ich weiterhelfen konnte.
Gruß
Roland