我想通过Node.js中的SOAP客户端访问WSDL服务。我用肥皂节点模块。但我无法找到任何文档来设置用户名和密码。我不打算创建SOAP服务器,我只想要SOAPClient,它类似于PHP的SoapClient,使用它我应该能够访问WSDL服务。在Node.js中设置授权SOAP客户端
更新:
我已经分叉和定制的来源,以支持该功能https://github.com/sincerekamal/node-soap
我想通过Node.js中的SOAP客户端访问WSDL服务。我用肥皂节点模块。但我无法找到任何文档来设置用户名和密码。我不打算创建SOAP服务器,我只想要SOAPClient,它类似于PHP的SoapClient,使用它我应该能够访问WSDL服务。在Node.js中设置授权SOAP客户端
更新:
我已经分叉和定制的来源,以支持该功能https://github.com/sincerekamal/node-soap
您可以提供用户名和密码这样的:
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)
只是为了分享我从阅读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'));
});
另一种选择添加基本身份验证使用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);
});
您需要通过将授权设置的用户名和密码,以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();
}
});
这是不是错误,如果是WSDL还身份验证? – 2016-01-21 13:57:49
从我所经历的,没有。似乎认证是在获取WSDL之前完成的。 – 2016-01-21 16:48:29
不,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