API 连接 SOAP 故障处理

API Connect SOAPFault handling

如何将 SOAP Fault 映射到 API Connect 中的 REST JSON 对象?

我正在通过检查我的 Invoke 组件中的 "Stop on Error" 来处理 SOAP 错误,但是,我不知道如何获取错误主体并在我的 message.body 中的 JSON 对象中设置],例如

我找到了解决这个问题的方法。

在我的例子中,我的问题是调用的变量输出向我展示了它的 JSON 主体作为 NodeList XML,所以我无法检索到任何信息。

我得到了这个变量并在网关脚本中将其转换为 XML

var nodeList = apim.getvariable('<responseServiceVariable>.body');

apim.setvariable('message.headers.content-type', 'application/xml')
apim.setvariable('message.body', nodeList);

之后,我使用了 XML-to-JSON 组件。

然后,我用其他网关脚本转换响应

apim.readInputAsJSON(function (error, json) {


  if (error) {}

  var jsonString = JSON.stringify(json)
  .replace(/$/g,'value');
  
  var jsonReplaced = JSON.parse(jsonString);

  var envelope = jsonReplaced['s:Envelope'];
  var body = envelope['s:Body'];
  var fault = body['s:Fault'];
  var faultstring = fault['faultstring'];
  var moreInformation = faultstring['value'];

  var httpMessage = "My httpMessage"

  var error = {"httpCode": 400, "httpMessage": httpMessage, "moreInformation": moreInformation}

  apim.setvariable('message.headers.content-type', 'application/json')
  apim.setvariable('message.status.code', 400);
  apim.setvariable('message.body', error);
});