如何使用NTLM身份验证在节点js中调用SOAP Web服务

时间:2016-06-27 09:43:02

标签: node.js web-services soap ntlm

我是NodeJS的新手,我需要一些帮助才能连接到使用NTLM身份验证的SOAP Web服务。

执行此代码时,httpntlm模块中会出现错误:



C:\soapclient\node_modules\httpntlm\ntlm.js:106

callback(new Error("Couldn't find NTLM in the message type2 comming from the server"));
                ^
TypeError: callback is not a function
    at Object.parseType2Message 
(C:\soapclient\node_modules\httpntlm\ntlm.js:106:3)
    at sendType3Message 
(C:\soapclient\node_modules\httpntlm\httpntlm.js:66:23)
    at Immediate._onImmediate (C:\soapclient\node_modules\httpntlm\httpntlm.js:93:4)
    at processImmediate [as _immediateCallback] (timers.js:383:17)




和代码:



var soap = require('soap-ntlm-2');
var url ='https://ws.tmb.cat/secure/ws-ibus/IBusService?WSDL'

var options = {
wsdl_options: {
    ntlm: true,
    username: "xxxxxx",
    password: "xxxxxx"

}
};

soap.createClient(url, options, function (err, client, body) {
 
if (err) {
    console.log("4")
    console.log(err);
}    
client.setSecurity(new soap.NtlmSecurity(options.wsdl_options));
 
console.log(client.describe());
report = client.getAllArrivaltimes({}, function(err, res){
           console.log('err='+err);
           console.log('res='+res);
});

});
   




1 个答案:

答案 0 :(得分:1)

这是http-ntlm模块中的一个错误 它没有通过callback,因此在调用时它是undefined

以下是GitHub上的相关错误: https://github.com/SamDecrock/node-http-ntlm/issues/48

以下是解决此问题的方法: https://github.com/SamDecrock/node-http-ntlm/pull/51