2014-11-08 42 views

回答

17

您可以提供用户名和密码这样的:

var soap = require('soap'); 
var url = 'your WSDL url'; 
var auth = "Basic " + new Buffer("your username" + ":" + "your password").toString("base64"); 

soap.createClient(url, { wsdl_headers: {Authorization: auth} }, function(err, client) { 
}); 

(从https://github.com/vpulim/node-soap/issues/56衍生,谢谢你Gabriel Lucenahttps://github.com/glucena

4

只是为了分享我从阅读https://github.com/vpulim/node-soap

var soap = require('soap'); 
var url = 'your WSDL url'; 

soap.createClient(url, function(err, client) { 
    client.setSecurity(new soap.BasicAuthSecurity('your username','your password')); 
}); 
+1

这是不是错误,如果是WSDL还身份验证? – 2016-01-21 13:57:49

+0

从我所经历的,没有。似乎认证是在获取WSDL之前完成的。 – 2016-01-21 16:48:29

+2

不,wsdl用于构建传递给回调的客户端,然后在其上设置安全性。据我所知,这种方法适用于wsdl不需要auth时,需要不同的auth或从文件系统加载的方法。我认为你需要将auth传递给创建客户端方法: var auth =“Basic”+ new Buffer('username'+':'+'password')。toString(“base64”); VAR客户= Soap.createClient( 'WSDLURL',{wsdl_headers:{授权:AUTH}},(ERR,客户端)=> { 如果(ERR){ 掷ERR; }否则{ client.yourMethod( ); } }); – 2016-01-23 09:45:22

5

另一种选择添加基本身份验证使用client.addHttpHeader。我尝试了setSecurity和设置wsdl_headers,但在向Cisco CUCM AXL进行身份验证时都不适用于我。

这里是我工作:

var soap = require('soap'); 
var url = 'AXLAPI.wsdl'; // Download this file and xsd files from cucm admin page 
var auth = "Basic " + new Buffer("your username" + ":" + "your password").toString("base64"); 
soap.createClient(url,function(err,client){ 
    client.addHttpHeader('Authorization',auth); 
}); 
3

您需要通过将授权设置的用户名和密码,以wsdl_headers对象如

var auth = "Basic " + new Buffer('username' + ':' + 'password').toString("base64"); 

var client = Soap.createClient('wsdlUrl', { wsdl_headers: { Authorization: auth } }, (err, client) => { 
    if (err) { 
     throw err; 
    } else { 
     client.yourMethod(); 
    } 
});