Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: aei am 10.03.05 - 10:28:08

Titel: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 10:28:08
Liebe Notes-Gemeinde,

eine Frage zu einer konkreten Problemstellung:

Kurzbeschreibung:
Notes 6.5 (Client) der via HTTP-Request (Keywordeingabe und Click!) als Response ein XML erhalten soll.

Frage:
Wie realisiert man
a) diesen HTTP-Request mit 6.5er Bordmittel?
b) Verarbeite ich die XML-Response?

Beides soll mit 6.5er Bodmittel realisiert werden, also keine weiteren Tools.

Danke für eure Anregungen und Hilfe
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 10:45:03
Ich würd den HTTP Request mit jakarta.commons.HttpClient erzeugen und das in einen Java Agenten einbinden.
Hat jemand noch eine andere Idee?

Die XML Response wird auf dem Server generiert.
Sofern es sich bei diesen Server um einen Domino Server handelt, wüßte ich keinen Grund, warum man für die Kommunikation zwischen Notes Client und Notes Server das http Protokoll bemüht, statt einfach das Notes-eigene zu nehmen wie 10.000de von Notes-Entwickler weltweit und seit Jahren.
Sofern der Notes-Client mit einem nicht-Notes Server kommuniziert, macht das mit dem xml Sinn.
Also wie ist das?

Axel
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 11:08:31
Klingt schon mal gut.
Der "andere" Server ist kein Domino. Insofern muss/sollte XML verwendet werden.

Vielleicht kommt ja alternativ auch noch ein Vorschlag ausserhalb der "Java"-Welt.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 11:25:05
Du kannst sicher auch http requests mit Hilfe der Win-API absetzen.
Manfred Dillmann hat das glaub ich in seinem rss-Agregator gemacht.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: m3 am 10.03.05 - 11:27:29
Du kannst sicher auch http requests mit Hilfe der Win-API absetzen.
Das sind IMHO aber keine "Bordmittel" mehr. ;)

/me holt sich ein Päckchen Kiesel und wartet darauf, dass jemand "Jehohva" schreit.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 11:36:50
ich glaub mit Bordmitteln kann man von einem Notes-Client keine httpRequests erzeugen.
Oder?
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 11:43:59
Was haltet ihr hiervon:

Set myXML = CreateObject("Microsoft.XMLDom")
myXML.load("Filename or URL")
Set xmlnodes = myXML.getElementsbyTagName("MYTAG")
Forall node In xmlnodes
...process nodes...
Set newdoc=New NotesDocument(db)
...
end forall
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 11:47:39
Nicht schlecht.
Aber damit erzeugst du ein xml Dokument.
Die Frage ist nun, wie du es an den Server sendest.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Thomas Schulte am 10.03.05 - 11:50:03
Wenn mein noch etwas wirres Hirn (drei Tage englische Sessions sind wirklich heftig) mich nicht trügt, dann kann man das native schon, nur nicht mit Lotus Script sondern mit JAVA. Hier scheint es ja um Datenübernahme zu gehen.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 11:58:45
Thomas, das Thema haben wir schon durch.
Er will kein Java.
In Java kann man das mit HttpUrlConnection, Sockets, RMI aus den Standardklassen machen.
RMI aber nur, wenn der andere Server ein Java Server ist.
Ich selbst würde HttpClient aus dem jakarta.commons Projekten präferieren, weil das die einfachste api ist. 
Ich würde das Systemintegration über http nennen.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 11:59:57
Hat das denn noch nie jemand gemacht bzw. habt ihr noch nie diese Problemstellung gehabt? Die Anforderung selbst klingt ja, heutzutage, relativ easy....aber....???
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 12:01:30
"Er will kein Java" - falsch. Ich kann auch in Java, aber ich dachte erst mal an "native" Bordmittel in R6.5.

Wenn es halt nicht geht, dann aben in Java...
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 12:02:20
doch ich. Aber eben mit Java.  ;D
Der Source code gehört aber meiner Firma.
LotusScript hat einfach nicht eingebaut, SocketConnections mit einem anderen Server aufzunehmen.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Thomas Schulte am 10.03.05 - 12:06:49
Stimmt wusste ich doch.

Eine Möglichkeit ist es einen Java Agent zu schreiben der den XML Stream abholt und in ein Notesdocument reinstellt (als Richtext), das dann wiederum ein zweiter Script Agent mit Hilfe des DOM Parsers verarbeitet.
Eine andere, rein Script basierte Lösung gibt es, wenn das XML Document irgendwo im File System abgespeichert werden kann. Dann kannst du das als NotesStream verwenden und dann mit dem NotesDOMParser drauf zugreifen und dann musst du mit den NotesDOMList und NotesDOMElementNode Klassen die ganzen Elemente durchlesen, dir die einzelnen Teil rauslesen und dann Notes Dokumente daraus erzeugen.

Der Kernpunkt ist aber halt das holen des XMLFiles. Wenn das dynamisch geholt werden soll dann geht das direkt nur mit einen klitzekleinen Java Agent (OS unabhängig).
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Thomas Schulte am 10.03.05 - 12:09:16
LotusScript hat einfach nicht eingebaut, SocketConnections mit einem anderen Server aufzunehmen.
Hier hat der geschätzte Autor recht, Script kann das nicht, aber mit einem Java Agent ist das ohne Probleme möglich und SOOO komplex ist der Sourcecode dafür nun auch wieder nicht. Den versteh ja sogar ich.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 12:14:15
Gut Gut - überredet!
"SOOO komplex ist der Sourcecode dafür nun auch wieder nicht" - deute ich so, dass dieser kleine Sourcecode hier nicht veröffentlicht wird und ich mich jetzt in mein Kämmerlein zurückziehe und arbeite.

Aber dennoch vielen Dank für die große Resonanz und die Hilfe. Die Ansätze haben den Weg aufgezeigt.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: animate am 10.03.05 - 12:23:16
ich bin mir nicht mehr ganz sicher, aber ich glaube, ich hab das mal mit LS hinbekommen. Und zwar mit der GetDocumentByURL Methode der NotesDatabase - Klasse. Die Methode liefert ein NotesDocument-Objekt zurück und in dessen Feldern ist dann die Response enthalten.
Wie gesagt, ich weiß nicht mehr, wie gut das damals funktioniert hat
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: m3 am 10.03.05 - 12:24:17
http://www.redbooks.ibm.com/abstracts/sg246207.html?Open

XML Powered by Domino How to use XML with Lotus Domino

XML, the extensible markup language, is the emerging standard for exchanging information between disparate systems. This simple yet powerful technology has many uses in Notes and Domino business applications. This redbook will help you understand XML and how to use it on a Domino platform.

In this IBM Redbook, we start with an introduction to XML, and describe its history, syntax, and related tools. We then describe how you can get information out of Domino in an XML format using tools you are already familiar with, such as views, forms, pages, and agents.

Once XML data is extracted from Domino, we show how it can be transformed into other formats, like HTML, text, or other XML formats. Finally, we describe how to get data that is already in an XML format into Domino using agents and the Lotus XML toolkit.

Table of Contents
1. Introduction to XML
2. Lotus and XML
3. Getting XML out of Domino
4. Transforming XML data in Domino
5. Getting XML into Domino
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 12:58:54
LotusScript hat einfach nicht eingebaut, SocketConnections mit einem anderen Server aufzunehmen.
und SOOO komplex ist der Sourcecode dafür nun auch wieder nicht. Den versteh ja sogar ich.
ist ja auch eine deutlich einfachere Art der Programmierung als Notes Programmierung.  :)
Konservativ: http://java.sun.com/docs/books/tutorial/networking/urls/index.html
mein Favorit:http://jakarta.apache.org/commons/httpclient/

Axel

Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: animate am 10.03.05 - 12:59:51
Was haltet ihr hiervon:

Set myXML = CreateObject("Microsoft.XMLDom")
myXML.load("Filename or URL")
Set xmlnodes = myXML.getElementsbyTagName("MYTAG")
Forall node In xmlnodes
...process nodes...
Set newdoc=New NotesDocument(db)
...
end forall

das habe ich ganz übersehen. das ist genau das, was du brauchst, wenn ich alles richtig verstanden habe.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 13:01:59
XML Powered by Domino How to use XML with Lotus Domino
Die Möglichkeiten der xml Verarbeitung in Domino haben sich seit R5 sehr stark geändert.
und... genau dieses Redbook hat meinen Respekt für Lotus nicht gerade gesteigert (um es milde auszudrücken).
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 13:04:09
Also doch:

Set myXML = CreateObject("Microsoft.XMLDom")
myXML.load("Filename or URL")
Set xmlnodes = myXML.getElementsbyTagName("MYTAG")
Forall node In xmlnodes
...process nodes...
Set newdoc=New NotesDocument(db)
...
end forall
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 13:26:19
sofern du per http-request keine Parameter übergeben mußt, könnte es klappen.
Versuch dort einfach mal die URL einzugeben.
Sag bitte, ob das funktioniert. Dann habe ich heute was gelernt.
Funktioniert aber wohl nur auf Windows, da es dieses Microsoft:XMLDom com Objekt verwendet.
Korrigiert mich bitte, wenn ich falsch liege.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: m3 am 10.03.05 - 13:30:15
XML Powered by Domino How to use XML with Lotus Domino
Die Möglichkeiten der xml Verarbeitung in Domino haben sich seit R5 sehr stark geändert.
Teppich! (Depp ich). Da hab ich doch glatt das This edition applies to Release 5.05 of Lotus Domino. übersehen.
Danke für den Hinweis.

Zitat
und... genau dieses Redbook hat meinen Respekt für Lotus nicht gerade gesteigert (um es milde auszudrücken).
Care to explain?
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: animate am 10.03.05 - 13:31:29
Das funktioniert so 100%. Haben wir in meiner alten Firma so verwendet.
Und es funktioniert 100% nur auf Windows.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: animate am 10.03.05 - 13:34:55
wir haben damit übrigens den amazon Webservice abgefragt um die Eingabe von Bücherdaten in die BibliotheksDB zu erleichtern.
Sehr schöne Funktionalität :D
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 13:35:58
Das funktioniert so 100%. Haben wir in meiner alten Firma so verwendet.
Aber nur, wenn man dem xml-versenden Server keine request Parameter zur Generierung des xmls schicken muß?
Oft ist es ja so, dass man etwas an den Server schickt und der generiert dann Informationen bezogen auf diesen REquest Informationen (hier in Form von xml) (request response)
Um einfach ein xml abzuholen (pull), ist das genial einfach.

Axel
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 13:37:35
wir haben damit übrigens den amazon Webservice abgefragt um die Eingabe von Bücherdaten in die BibliotheksDB zu erleichtern.
Sehr schöne Funktionalität :D
Kann man da Parameter übergeben?
Oder hat der amazon Webservice das konkrete Bücher-XML über die url gefunden?


Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: animate am 10.03.05 - 13:43:27
Ja, die Parameter (z.B. ISBN) gibst du über die URL mit.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: animate am 10.03.05 - 13:50:10
Aber nur, wenn man dem xml-versenden Server keine request Parameter zur Generierung des xmls schicken muß?l

Damit ist nur ein GET möglich und da gibst du halt die RequestParameter in der URL mit.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 10.03.05 - 14:01:01
thank u
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 14:18:46
Also wirklich. Da haben wir heute wirklich viel gelernt und ich sag mal ein ganz dickes DANKESCHÖN in die Runde!

Wenn ich die Routinen implementiert habe gebe ich mal einen Status- oder auch Erfahrungsbericht dazu ab.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Settler am 10.03.05 - 14:56:38
wir haben damit übrigens den amazon Webservice abgefragt um die Eingabe von Bücherdaten in die BibliotheksDB zu erleichtern.
Sehr schöne Funktionalität :D


Jo is echt gut gelungenl :)
Die Officemädels waren ganz happy


EDIT:
krass mein erster Post, war sonst immer stiller Genießer des Forums...
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 10.03.05 - 21:33:32
So...implementiert und funktioniert.

An alle "ich-machs-mit-1000-zeilen-java-jongleure".

HTTP-Get inkl. Paramterübergabe mit Notes-Bordmittel:

Set myXML = CreateObject("Microsoft.XMLDom")
myXML.load("Filename or URL")
Set xmlnodes = myXML.getElementsbyTagName("MYTAG")
Forall node In xmlnodes
Set newdoc=New NotesDocument(db)
'und hier jetzt die einzelnen tags auslesen
 elementxy = source.getElementsByTagName(Tag)
end forall

Und hier die passende Funktion dazu:

Function ElementsByTagName(source,Tag As String)As Variant
Dim XMLList() As String
Set x=source.getElementsByTagName(Tag)

On Error Goto Erreur
Redim XMLList(1 To x.length)
For i = 1 To x.length
XMLList(i)=(x.item(i-1).text)
Next
ElementsByTagName=XMLList
Exit Function
Erreur:
XMLList(1)=False
ElementsByTagName=XMLList
End Function

....und FERTIG!
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Thomas Schulte am 10.03.05 - 23:24:16
auch nicht schecht. Das hätte ich in Kopenhagen gebrauchen können.  ;D
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 11.03.05 - 08:33:01
Zumindest zeigt es sich, dass Bordmittel "als primitive Strukturen (Zitat meines Java-Referenten)" auch was hergeben.

Bis zur nächsten Problemstellung...
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: animate am 11.03.05 - 08:38:51
ich würde nicht so weit gehen, den Microsoft XML Parser als primitive Struktur zu bezeichnen. Und außerdem wäre Java in diesem Fall auch ein Bordmittel gewesen, weil Notes alle nötigen Klassen für die Aufgabe schon mitbringt ;)
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: aei am 11.03.05 - 08:40:59
Meine Rede!
Aber Du hast recht. Java ist auch ein Bordmittel.

Ich finde es dennoch gut, hier im Forum gemeinsam eine smarte und den Anforderung ausreichende Lösung erarbeitet zu haben.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 11.03.05 - 09:38:02
ich würde nicht so weit gehen, den Microsoft XML Parser als primitive Struktur zu bezeichnen.
+1.
im namen der political correctness:
Statt "primitive Struktur" fänd ich auch "low level"/"high level" oder Api mit "hohem Abstraktionsniveau" / "niedrigen Abstraktionsniveau" gelungener. Java und Zusatzkomponenten bieten viele Apis/Komponenten auf einem hohen Abstraktionsniveau.
Der Microsoft xml Parser ist auch eine Komponente auf einem hohen Abstraktionsniveau.
Um sich das File in den lokalen Prozessraum zu laden, braucht es nur:
Code
 
myXML.load("Filename or URL")
mehr highlevel geht es kaum.


Komponenten auf einem hohen Abstraktionsniveau machen programmieren einfacher, wenn man sie beherscht.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: animate am 11.03.05 - 09:55:00
+1.

könntest du mich ungewaschenen mal erleuchten und mir sagen, was +1 bedeutet, bitte?  :)
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Driri am 11.03.05 - 10:09:31
Würde mich auch interessieren. Zumal ich "+1" bisher nur aus anderen Foren in der Form kenne, daß Leute Posts ohne Informationsgehalt nutzen, um damit ihren Posting-Counter hochzutreiben.

Ist ja bei Axel nicht der Fall.
Titel: Re: HTTP-Request - XML- Verarbeiten
Beitrag von: Marinero Atlántico am 11.03.05 - 10:46:34
+1 heisst:
"Find ich auch" oder
"ich stimme dem zu" oder
"der Vorposter hat absolut recht und ich will auch noch meinen Senf dazugeben"