使用带有"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标头?具体来说,我希望Cookie参数位于HTTP头中。
这是Node/Express可以做到的吗?或者我需要另一个方案来实现这一点吗?
提前谢谢。
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);
});
});
我遇到了同样的问题,并且已经处理了一段时间。我已经取得了一些进展,我可以看到饼干,但它们并没有像我预期的那样通过。我不确定是我做错了什么,还是它特定于我试图访问的服务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);
});
});