如何将 SOAP 故障映射到 API Connect 中的 REST JSON 对象?
我通过检查 Invoke 组件中的“错误停止”来处理 SOAP 错误,但是,例如,我不知道如何获取错误正文并在我的 message.body 中设置 JSON 对象
如何将 SOAP 故障映射到 API Connect 中的 REST JSON 对象?
我通过检查 Invoke 组件中的“错误停止”来处理 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);
});