【问题标题】:Call to an external API via HTTPS from LotusScript通过 HTTPS 从 LotusScript 调用外部 API
【发布时间】:2017-12-29 14:14:50
【问题描述】:

我需要从 LotusScript 调用基于 HTTPS 的服务。

以前,我用过:

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

但现在我们已将应用程序移至 Linux 上的 Domino 服务器。

我第一次尝试替换此代码,是调用shell 函数,调用curl。它可以工作,但shell 函数总是返回一个整数,因此响应会作为临时文件传回LotusScript。 curl 解决方案相当慢。大约 2 秒的响应时间太长了。 MsXml 解决方案在 170 毫秒内响应!

然后,为了摆脱临时文件,我尝试使用libcurl,但它需要一个回调方法来接收响应。据我了解,LotusScript 无法将回调方法传递给本机方法。

下一次尝试是使用 LS2J 从 Java 发出 HTTP 请求。它有效,但响应时间超过 6 秒,对我们的应用程序毫无用处。

如何在 Linux 上从 LotusScript 调用外部 API,并具有下降性能?

@IBM:我们能否在 LotusScript 中有一个 HTTP 客户端和一个 JSON 解析器?

【问题讨论】:

  • 奇怪。我使用了 LS2J,它足够快。事实上,我们从来没有检查过速度,没有必要。另外,我在 LS 中使用的 JSON 库也足够快。据我所知,这一切都在 OpenNTF 上。你用了什么?或者你能分享一些你的代码吗?
  • 链接到 HCL 的新类文档:help.hcltechsw.com/dom_designer/11.0.1/basic/…

标签: lotus-notes lotusscript


【解决方案1】:

LotusScript 可以declare 并调用外部 C 库中的函数,我想您在尝试使用 libcurl 时已经知道了。您可以做的是编写自己的 C 库,作为 libcurl 的前端。您的 C 代码必须提供回调并等待它处理结果,以便您可以将其传递回 LotusScript。

【讨论】:

  • 我一直在考虑这些思路,但我没有任何在 Linux 上编写 C 库的经验。你有任何“指针”吗? ;-)
  • 我已经很久没有和一个在 Domino/Linux 环境中进行 C 编码的团队合作了。如果我现在必须自己完成一些工作,我会联系的人是 Daniel Nashed。我不相信他在这个网站上有一个帐户。他的信息在这里:blog.nashcom.de/nashcomblog.nsf/dx/contact.htm。请注意,他是一名顾问,不一定会免费提供建议。
  • 我们让我们的朋友做了一个包装器:github.com/iDoerDK/CurlWrapper 注意:Domino 10 将附带某种 HTTP 客户端。 :-)
【解决方案2】:

我建议摆脱 LS 并在 Java 中做你需要做的事情。在 Java 中,您有用于 http 的本机库。或者您可以在使用 JNA 时使用 C 中的回调

【讨论】:

  • 感谢您的建议。我不能像那样摆脱 LotusScript,因为我们在 LS 中已经有很多业务逻辑。我还担心基于 Java 的 Web 代理的响应时间。
猜你喜欢
  • 2020-06-29
  • 2018-02-05
  • 2013-03-13
  • 2017-02-12
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多