2017-12-29 2 views
1

Ich brauche einen Aufruf an einen HTTPS-basierten Dienst von LotusScript.Aufruf an eine externe API über HTTPS von LotusScript

Früher habe ich verwendet:

Set http = CreateObject("Msxml2.ServerXMLHTTP.3.0") 

Aber jetzt haben wir die Anwendung auf einen Domino-Server auf Linux verschoben.

Mein erster Versuch, diesen Code zu ersetzen, war die shell Funktion mit einem Anruf an curl aufrufen. Es funktioniert, aber die Funktion shell gibt immer eine Ganzzahl zurück, sodass die Antwort als temporäre Dateien zurück an LotusScript übertragen wird. Die Curl-Lösung ist eher langsam. Die Reaktionszeit von ca. 2 Sekunden ist zu lang. Die MsXml-Lösung reagierte in 170 ms!

Dann, um die temporären Dateien loszuwerden, habe ich versucht, libcurl, aber es erfordert eine Rückrufmethode, um die Antwort zu erhalten. Ich verstehe, dass LotusScript Callback-Methoden nicht an native Methoden übergeben kann.

Der nächste Versuch war mit LS2J die HTTP-Anfrage von Java zu machen. Es hat funktioniert, aber mit einer Reaktionszeit von mehr als 6 Sekunden ist es für unsere Anwendung nutzlos.

Wie kann ich eine externe API von LotusScript auf Linux mit Abstiegsleistung aufrufen?

@IBM: Können wir bitte einen HTTP-Client und einen JSON-Parser in LotusScript haben?

+0

Seltsam verwenden. Ich habe LS2J benutzt und es ist schnell genug. In der Tat haben wir nie die Geschwindigkeit überprüft, keine Notwendigkeit. Auch die JSON-Bibliothek, die ich in LS verwende, ist schnell genug. Soweit ich weiß, ist alles auf OpenNTF. Was hast du benutzt? Oder könnten Sie etwas von Ihrem Code teilen? –

Antwort

0

LotusScript kann declare und Funktionen in externen C-Bibliotheken aufrufen, die Sie wahrscheinlich bereits aus dem Versuch, libcurl zu verwenden wissen. Sie können Ihre eigene C-Bibliothek schreiben, die als Front-End für libcurl dient. Ihr C-Code muss den Rückruf bereitstellen und darauf warten, dass er das Ergebnis verarbeitet, damit Sie es an Ihr LotusScript zurückgeben können.

+0

Ich habe in diese Richtung gedacht, aber ich habe keine Erfahrung mit dem Codieren von C-Bibliotheken unter Linux. Hast du zufällig irgendwelche "Zeiger"? ;-) –

+0

Es ist schon lange her, dass ich mit einem Team gearbeitet habe, das C in einer Domino/Linux-Umgebung programmiert hat. Wenn ich jetzt selbst arbeiten müsste, wäre Daniel Nashed die Person, die ich kontaktieren würde. Ich glaube nicht, dass er auf dieser Seite ein Konto hat. Seine Info ist hier: http://blog.nashcom.de/nashcomblog.nsf/dx/contact.htm. Beachten Sie, dass er Berater ist und nicht unbedingt kostenlos Ratschläge gibt. –

0

Ich würde vorschlagen, LS loszuwerden und tun, was Sie in Java tun müssen. In Java haben Sie native Bibliotheken für http. Oder Sie können Rückrufe von C verwenden, wenn Sie JNA

+0

Danke für Ihren Vorschlag. Ich kann LotusScript nicht einfach loswerden, da wir in LS bereits eine Menge Geschäftslogik haben. Ich bin auch besorgt über die Reaktionszeit von Java-basierten Web-Agenten. –