2016-08-01 19 views
0

Wenn ein SOAP-Webservice in NodeJS mit dem Paket 'soap' verwendet wird. Wie so:NodeJS - So erhalten Sie den HTTP-Header der Antwort eines SOAP-Webdiensts

var soap = require('soap'); 
var url = 'http://example.com/wsdl?wsdl'; 
var args = {name: 'value'}; 
clientsoap.createClient(url, function(err, client) { 
    client.MyFunction(args, function(err, result, raw, soapHeader) { 
     console.log(result); 
    }); 
}); 

Wie erhalte ich die HTTP-Header der Antwort auf MyFunction? Insbesondere möchte ich den Cookie-Parameter innerhalb des HTTP-Headers.

Ist das etwas, was Node/Express kann? Oder gibt es ein anderes Paket, das ich brauche, um dies zu erreichen?

Vielen Dank im Voraus.

Antwort

0

Ich stieß auf das gleiche Problem und arbeite seit einiger Zeit daran. Ich habe einige Fortschritte gemacht, wo ich die Kekse sehen kann, aber sie kommen nicht genau so durch, wie ich es erwartet habe. Ich bin mir nicht sicher, ob ich etwas falsch mache, oder es ist spezifisch für den Dienst WSDL, den ich versuche zu treffen. Aber hier ist meine Lösung ...

soap.createClient(pathOrUrlToWSDL, function(err, client) { 
    client.myFunction(args, function(err, result, raw, soapHeader) { 
     console.log(err, result, raw, soapHeader); 
    }); 

    // -- should reach the response before the callback in client.myFunction() 
    client.on('response', function(envelope, message) { 
     // -- couldn't find documentation on this function, so I just named the variables 'envelope' and 'message' 
     console.log(message.headers); 
    }); 
}); 
1

Die NodeJS Seife Modul speichert die letzte Antwort-Header gegen die Auftraggeber, wenn eine Methode aufgerufen, so Zugriff nur um es in Ihrem Rückruf:

var soap = require('soap'); 
var url = 'http://somewhere.com?wsdl'; 
var args = {name: 'value'}; 
soap.createClient(url, function(err, client) { 
    client.myFunction(args, function(err, result) { 
    console.log(client.lastResponseHeaders);   
    }); 
});