NodeJS - 如何获取SOAP Web服务响应的HTTP头

时间:2016-08-01 23:21:41

标签: node.js web-services http soap http-headers

使用“soap”包在NodeJS中使用SOAP Web服务时。像这样:

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

如何获取MyFunction响应的HTTP标头?具体来说,我想在HTTP标头内部使用Cookie参数。

Node / Express能做什么?或者我需要另一个包来实现这个目标吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

NodeJS soap模块在调用方法时会为客户端存储最后一个响应头,所以只需在回调中访问它:

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

答案 1 :(得分:0)

我遇到了同样的问题,现在已经有一段时间了。我已经取得了一些进展,我可以看到cookie,但它们并没有完全按照我的预期完成。我不确定我做错了什么,或者它是否特定于我试图触及的服务WSDL。但这是我的解决方案......

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