AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
30.09.20 - 17:58:15
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 9
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Thomas Schulte, koehlerbv, m3)
| | |-+  Aufruf einer Webseite aus Lotusscript
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Aufruf einer Webseite aus Lotusscript  (Gelesen 785 mal)
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« 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?
Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« Antworten #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";

Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11460


« Antworten #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?
Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11460


« Antworten #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
Gespeichert
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« Antworten #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','"")")
Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1195



« Antworten #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.
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« Antworten #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.
Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« Antworten #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
Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1195



« Antworten #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 Wink
Ggf. klappt der Aufruf mit:
Code:
  Set wsh = CreateObject("WScript.Shell")
  wsh.Run "https://meinServer/meineSeite.php?test=abcde"
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« Antworten #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?
Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2690



« Antworten #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
Gespeichert
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« Antworten #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 » Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« Antworten #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.  Undecided
Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1195



« Antworten #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 » Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
schroederk
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1680

Ich liebe dieses Forum!


« Antworten #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.
Gespeichert

Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1195



« Antworten #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 Wink
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: