2017-03-06 1 views
0

Comment mapper une erreur SOAP à un objet REST JSON dans API Connect?API Connect Gestion SOAPFault

Je les erreurs de manipulation SOAP par chèque « Arrêt sur erreur » dans mon composant Invoke, cependant, je ne pas savoir comment obtenir le corps de défaut et mettre dans un objet JSON dans mon message.body, par exemple

Répondre

0

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); 
 
});