Autor Thema: Aufruf einer Webseite aus Lotusscript  (Gelesen 4921 mal)

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Aufruf einer Webseite aus Lotusscript
« am: 20.08.20 - 11:35:32 »
Hallo,

ich möchte gerne (aus dem Body einer Mail ermittelte) Daten an einen Webserver senden, damit dieser die Daten weiterverarbeitet.
Ich hatte gehofft/gedacht, dass es mit der Lotusscript -Funktion OpenURL funktionieren würde.

Für einen einfachen Test habe ich in einem über den Menüpunkt Aktion aufgerufenen Agenten die folgende Zeile versucht:

Code
Call workspace.URLOpen( "https://meineSeite?test=abcd" , 0)

Meine Erwartung war, dass sich dann der beim OS hinterlegte Browser öffnen würde, oder wird die Seite im Hintergrund geöffnet (was auch nicht schlecht wäre, sofern ich nach dem Aufruf eine Rückmeldung z.B. "war erfolgreich" geben könnte)

Oder befinde ich mich komplett auf dem Holzweg?
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #1 am: 20.08.20 - 14:36:27 »
Nachdem ich weiter im Netz gesucht habe, bin ich auch auf WinHTTP gestoßen. Leider komme ich auch hier nicht weiter. Das Script läuft zwar ohne Fehler durch, erzeugt aber nicht die gewünschte/erhoffte Ausgabe:

Code
	Dim WinHttpReq As Variant
	Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
	Call WinHttpReq.open( "GET", "https:/meinServer/meinSeite.php?test=abcde",  False )
	Call WinHttpReq.send( )
	Print WinHttpReq.ResponseText

Das PHP-Script beinhaltet nur ein
Code
echo "geklappt";

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.710
  • Geschlecht: Männlich
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #2 am: 20.08.20 - 15:35:34 »
Das sind zwei unterschiedliche paar Schuhe. Dein erstes Beispiel öffnet e8ne URL, das zweite ist ein GET REST request. Und was da zurückkommt ist lediglich der response code. Solange die angefragte Seite keine REST services bereit stellt kommt da auch nichts weiter zurück.

Was willst Du denn überhaupt erreichen?
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.710
  • Geschlecht: Männlich
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #3 am: 20.08.20 - 15:56:46 »
DerURLOpen Befehl funktioniert ja auch nur in der von Dir verwendeten Weise, wenn die Seite im Note Browserfenster geöffnet wird. Bei einem externen Browser läuft das anders . siehe https://help.hcltechsw.com/dom_designer/11.0.0/appdev/builds/H_URLOPEN.html
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #4 am: 20.08.20 - 16:49:16 »
Konkret geht es um als eingehende Mails ankommende Auftragsbestätigungen, deren Mail-Text (und Anhänge) auf einem Contentserver gespeichert werden sollen und in unserem ERP-System verknüpft werden. Die Daten soll je nachdem, was in der Mail gefunden wurde, mit der Bestellnummer, der Materialnummer und der Lieferantennummer verknüpft werden.
Ein Dialog soll die drei Felder abfragen und die ermittelten Werte (Auftragsnummer, Materialnummer, Lieferantenummer) als Vorschlagswerte anzeigen. Der Dialog kann im Notes aber auch schon auf dem Webserver angezeigt werden. Im Idealfall kommt danach eine Rückmeldung, dass der Vorgang erfolgreich abgeschlossen wurde.
Aktuell geht es erstmal um ein "Proof-of-Concept". D.h. ich möchte dafür erstmal aus Notes heraus ein PHP-Script mit Parametern aufrufen und die Ausgabe vom PHP-Script in der Konsole oder Messagebox anzeigen lassen.
Der Webserver und das PHP-Script sind recht einfach aufgebaut, also nichts mit Webservice-Provider oder -Consumer und WSDL-Dateien.

Umgekehrt funktioniert das sehr einfach über cURL und "https://mailserver/maildb.nsf/Agentenname?OpenAgent".

Ein Versuch, den Aufruf über @Formula hat leider auch nicht geklappt:

Code
Evaluate("@URLOpen(""https://meinServer/meineSeite.php?test=abcde','_blank','"")")
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #5 am: 20.08.20 - 18:12:40 »
Ein 'URLOpen' öffnet eigentlich die Seite im Browser, wenn das nicht der Fall ist dann die Arbeitsumgebung prüfen, hier wird der aufzurufende Browser konfiguriert.
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #6 am: 21.08.20 - 07:19:54 »
Meinst Du mit "URLOpen" Lotusscript oder Formula oder beides?
Konfiguriert war der Internet Explorer, aber auch eine Umstellung auf Firefox hatte keine Auswirkungen.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #7 am: 21.08.20 - 07:35:53 »
Ich habe es nun mit folgendem Code hinbekommen:
Damit wird zwar kein Fenster geöffnet, somit wird die Business Logic komplett im LS liegen, aber OK.
Und es gibt noch ein Problem mit dem Caching, denn es wird auch nach mehreren Änderungen das Ergebnis von der ersten Version angezeigt.

Code
	Dim XmlHttpRequest As Variant
	Dim session As New NotesSession
	Dim response As String
	Set XmlHttpRequest = CreateObject("Microsoft.XMLHTTP")
	
	Call XmlHttpRequest.Open("GET", "https://meinServer/meineSeite.php?test=abcde", False)
	Call XmlHttpRequest.Send()
	
	response = XmlHttpRequest.responseText
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #8 am: 21.08.20 - 09:26:30 »
Ob LS oder Formel - URLopen macht immer das gleiche ... habe aber festgestellt, dass man den Browser gar nicht so ohne weiteres beim Notes-Client anpassen kann ;)
Ggf. klappt der Aufruf mit:
Code
  Set wsh = CreateObject("WScript.Shell")
  wsh.Run "https://meinServer/meineSeite.php?test=abcde"
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #9 am: 24.08.20 - 13:15:01 »
Ich nehme mal an, dass es noch immer keine direkte Methode gibt, den Inhalt der Anhänge zu lesen ohne sie vorher zwischenspeichern zu müssen? Hab zwar etwas mit einer Java-Funktion gefunden, aber nativ im Lotusscript geht es wohl nicht, oder?
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #10 am: 24.08.20 - 13:49:37 »
Über DXL-Export?

Da hast Du den Inhalt der Dateianhänge Base-64-codiert, habe das einmal umgekehrt genutzt, um Dateianhänge zu erstellen, ohne die Datei vorher auf die Platte schreiben zu müssen

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #11 am: 25.08.20 - 10:05:07 »
Ich denke, ich bin mit dem DXL-Export (vielen Dank Peter für den Tipp) ein gutes Stück weiter:

Code
	Set stream = s.CreateStream
	Set export = s.CreateDXLExporter
	export.setInput doc
	export.setOutput stream
	export.process
	txt=stream.ReadText
	start = InStr(1,txt,"<notesbitmap>")
	finish = InStr(1,txt,"</notesbitmap>")
	attData=Mid(txt,start+13, finish-start-13)

Funktioniert im Moment natürlich nicht bei Bildern, sondern nur bei TXT oder PDF.
Das was dem Webserver übergebe, scheint zwar valides Base64 zu sein (getestet bei base64.guru), aber ich bekomme es dennoch nicht umgewandelt, um daraus wieder ein Attachment zu machen (welches dann auf dem Content-Server des ERP-Systems gespeichert werden kann)


Eine Beispiel-Base64-Datei habe ich hier mal angehangen. (Einfache TXT-Datei)
« Letzte Änderung: 25.08.20 - 10:08:17 von schroederk »
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #12 am: 25.08.20 - 16:36:22 »
Wenn ich versuche, den Base64-String bereits im Notes zu dekodieren, dann kommt da leider auch nichts lesbares raus:

Code
	Set doc2 = New NotesDocument( db )	
	Set mime = doc2.CreateMIMEEntity
	Call mime.SetContentFromText(stream, "text/plain;charset=UTF-8", ENC_BASE64)
	Call mime.DecodeContent	
	MessageBox mime.Contentastext, MB_OK, "Inhalt"

Ich werde da wohl einen groben Denkfehler haben.  :-\
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #13 am: 25.08.20 - 17:16:12 »
Nimm mal die Base64-Lib von nsftools - http://www.nsftools.com/tips/Base64v14.lss, damit sollte es gehen.
« Letzte Änderung: 25.08.20 - 17:43:10 von jBubbleBoy »
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.918
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #14 am: 26.08.20 - 06:54:47 »
Das kann ich gerne mal testen, aber eigentlich würde ich gerne den Base64 String erst am Ziel-Server dekodieren und wieder zu einem Attachment werden lassen.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Aufruf einer Webseite aus Lotusscript
« Antwort #15 am: 26.08.20 - 19:14:28 »
Das muss dann mit PHP-Script umgesetzt werden, wenn das dein Ziel-Server ist ... aber einem GET-Request (Webseite öffnen) wird man kein Base64-String mitgeben können, es sei denn die Datei ist sehr klein ;)
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz