APIC 2018:如何在网关脚本中读取来自调用策略的XML响应

时间:2018-12-06 08:42:48

标签: javascript ibm-cloud ibm-datapower apiconnect apic

我想在网关脚本中读取APIC Invoke 策略返回的XML中的特定值(来自SOAP服务)。

我搜索过高低。我已经通过搜索尝试过了。结果:我惨败。

我以为 apim.readInputAsXML(function(error,xmlNodelist))是答案,但是当我意识到我正在读取API的输入时感到困惑。得出的结论是,我正在处理的“ xmlNodeList”实际上是由“ readInputAsXML”创建的(不是我以为我是作为参数传递的那个)Duh!我想“ input”一词会让它放弃。

我找到了'readAsXML()',但是找不到它所处理的对象类型。

var xmlNodeList = apim.getvariable('response.body') 一开始似乎起作用,类型为“对象Nodelist”,与使用“ readInputAsXML”时相同。

但是,“ xmlNodelist.item(0)”返回的对象是blob(类型= 13)。这与“ readInputAsXML”相反,后者是一个名为“ Envelope”的节点。

任何人都可以提供解释或为我提供参考吗?

顺便说一句,这是APIC 2018.3.7

1 个答案:

答案 0 :(得分:0)

我遇到了类似的情况。 api中的响应很可能没有标题(内容类型),因此apiс不知道如何解析它。我建议对api的响应附带内容类型标头。要访问消息正文,请使用上下文变量message.body,该上下文变量在调用之前包含请求,在响应之后。