J'ai découvert comment résoudre ce problème. Dans mon cas, mon problème était que la sortie de la variable invoke m'exposait son corps JSON en tant que XML NodeList, donc je ne pouvais pas récupérer d'informations à ce sujet.
J'ai eu cette variable et transformé en XML dans un gatewayscript
var nodeList = apim.getvariable('<responseServiceVariable>.body');
apim.setvariable('message.headers.content-type', 'application/xml')
apim.setvariable('message.body', nodeList);
Après cela, je le composant XML à JSON.
Et puis, je transformais réponse avec d'autres gatewayscript
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);
});