0

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

我通过检查 Invoke 组件中的“错误停止”来处理 SOAP 错误,但是,例如,我不知道如何获取错误正文并在我的 message.body 中设置 JSON 对象

4

1 回答 1

0

我发现了如何解决这个问题。

就我而言,我的问题是调用的变量输出将它的 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);
});

于 2017-03-14T20:05:14.397 回答