Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: buzi am 17.12.15 - 11:57:38

Titel: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: buzi am 17.12.15 - 11:57:38
Hallo zusammen,

mein Agent braucht lesenden Zugriff auf eine Datei die auf einem anderen Notes Server liegt. Aufruf wie folgt:

Code

opened = in_streamProdukte.Open("http://000.0.000.000/Web/XML.nsf/id/Produkte?openDocument")


Wobei 000000... die IP-Adresse des Servers ist.

Wenn ich die Adresse im Webbrowser eingebe, wird die xml-Datei direkt angezeigt. Was muss ich im open-Befehl eingeben, damit ich auf den Inhalt der Datei zugreifen kann? Und ist es möglich, dort eine neue Datei anzulegen? Ich weiß zu wenig über die Art, wie Lotus Notes mit Dateien umgeht, um zu verstehen, ob die xml-Datei dort im Dateisystem zu finden ist oder in einder Datenbank enthalten ist.

Danke für eure Hilfe!
Titel: Re: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: jBubbleBoy am 17.12.15 - 12:38:17
Code
Function GetHTMLWindows(strURL As String) As String
	On Error GoTo logError
	
	Dim xmlHTTP As Variant
	Dim strHTTPReturn As String

	Set xmlHTTP = CreateObject("MSXML2.ServerXMLHTTP")

	xmlHTTP.open "GET", strURL
	xmlHTTP.Send
	strHTTPReturn = xmlHTTP.responseText

	GetHTMLWindows = strHTTPReturn

	GoTo EndeZ
logError:
'--	errorHandle 
	Resume endez
EndeZ:
End Function

Mit Java geht es direkter ;-)
Titel: Re: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: pram am 17.12.15 - 19:27:19
Mit Lotusscript geht es auch
http://www-12.lotus.com/ldd/doc/lotusscript/lotusscript.nsf/1efb1287fc7c27388525642e0074f2b6/1586188222364eb68525642e0075cdbe?OpenDocument

Es gibt aber glaub ich die Einschränkung, dass es nur in lokalen DBs geht

Gruß Roland
Titel: Re: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: buzi am 18.12.15 - 09:21:06
Hallo zusammen,

leider hat mir noch keiner wirklich weiter helfen können. Ich möchte nicht auf ein Notes-Dokument zugreifen sondern es handelt sich um eine xml-Datei, die ich nur streamen will. Der Aufruf muss also lauten:

Code
	Set in_streamProdukte = session.CreateStream()
	opened = in_streamProdukte.Open("http://000.0.000.000/Web/XML.nsf/id/Produkte?openDocument")

Geht das nur auf der Datenbank wo die Datei liegt?
Kann ich sie mir vielleicht irgendwie runter kopieren?


Titel: Re: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: buzi am 18.12.15 - 10:33:07
Hallo BubbleBoy,

ich mache es auch gern in JAVA wenn das einfacher ist. Da gebe ich im Stream einfach direkt die URL an, oder?
Titel: Re: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: Tode am 18.12.15 - 11:17:38
Du hast ZWEI Lösungen bekommen... Was genau passt Dir an den beiden Lösungen nicht? Der NotesStream kann das einfach nicht... Aber beide Lösungen tun genau das, was Du willst.. Gut: Die zweite hat den Nachteil, dass Sie über den WebNavigator geht, der nicht unbedingt vorhanden sein muss, aber auch die tut was Du willst...
Titel: Re: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: jBubbleBoy am 18.12.15 - 12:37:38
Wenn du wirklich mit XML-Dateien über den HTTP-Dienst managen willst, dann solltest du auf Java umsteigen. Zu Java und Stream gibt es viele Beispiele im Netz. Wenn dein Ziel nach wie vor die NotesStream-Klasse ist, dann würde ich einen Java "Web-Datei-Manager" Agenten schreiben, der temporär die XML-Dateien im Filesystem bereitstellt, denn Dateien sind für die NotesStream-Klasse kein Problem.
Titel: Re: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: thkn777 am 18.12.15 - 14:23:00
Vielleicht gucke ich grad völlig in die falsche Richtung, aber mir kommt Deine URL seltsam vor.

Der Domino URL-Befehl, um eine in einem Notes-Dokument angehängte Datei (z.B. abc.xml) zu öffen, lautet prinzipiell so:
http://Host/Datenbank/Ansicht/Dokument/$File/Dateiname?OpenElement

UND

Bisher bin ich immer davon ausgegangen, daß Streams im Notes sowieso nur ein Open auf File-Objekte machen können (siehe auch tode's Antwort):
flag = notesStream.Open( pathname$ [ , charset$ ] )

Von daher musst Du meiner Meinung nach ein anderes Verfahren einsetzen, um die HTTP-Connection aufzubauen und von dort etwas zu lesen. Die Nutzung einer speziellen MSXML-Funktion (siehe pram) könnte eine Variante davon sein.

Vielleicht hast Du einfach die schon gemachten Vorschläge falsch interpretiert? Wir haben schon verstanden, daß Du keinen XML-Parser brauchst und Dich nicht durch die XML-Nodes hangeln möchtest. Du möchtest NUR den Text-Stream haben - in dem dann "zufällig" XML steht.

Viel Erfolg!
Titel: Re: NotesStream.open - auf Datei auf web server zugreifen
Beitrag von: Tim Pistor am 18.12.15 - 14:54:04
Vielleicht gucke ich grad völlig in die falsche Richtung, aber mir kommt Deine URL seltsam vor.
Der Domino URL-Befehl, um eine in einem Notes-Dokument angehängte Datei (z.B. abc.xml) zu öffen, lautet prinzipiell so:
http://Host/Datenbank/Ansicht/Dokument/$File/Dateiname?OpenElement

Die Maske könnte doch so gebaut sein, dass sie XML zurückgibt...

Edit: Man muss ja nicht den ganzen Code auf Java umstellen. Für solche Zwecke haben wir z.B. eine auf LS2J basierte Bibliothek gebaut. Lässt sich dann überall einfach & bequem einbinden...