Node.js 具有证书的节点soap createClient
我正在尝试使用https获取WSDL文件 以下是我的尝试:Node.js 具有证书的节点soap createClient,node.js,web-services,ssl,soap,node-soap,Node.js,Web Services,Ssl,Soap,Node Soap,我正在尝试使用https获取WSDL文件 以下是我的尝试: ldap.getEmpowerments = function(uid) { return new Promise(function(resolve, reject) { var url = 'https://yradeowshabil.corp.leroymerlin.com/adeo-ws-habil/AccessManagementService?WSDL' createClient(u
ldap.getEmpowerments = function(uid) {
return new Promise(function(resolve, reject) {
var url = 'https://yradeowshabil.corp.leroymerlin.com/adeo-ws-habil/AccessManagementService?WSDL'
createClient(url).then( function(client) {
console.log(client.describe);
}, function(error) {
console.error('habilitation client failed', error);
});
});
};
这给了我输出:
> hablitation client failed
> [Error: 140274398734112:error:140773F2:SSL
> routines:SSL23_GET_SERVER_HELLO:sslv3 alert unexpected
> message:../deps/openssl/openssl/ssl/s23_clnt.c:770: ]
为了与wsdl文件建立通信,我有两个必需的证书。我尝试了setSecurity方法,但我的客户机从未创建过,因此它毫无用处 根据文档,我可以在createClient方法中添加一些选项,并重写请求对象或httpClient。问题是没有关于如何做到这一点的解释。我该怎么做呢
谢谢您的帮助。请尝试将此添加到您的app.js:
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
请尝试将此添加到您的app.js:
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
你好我现在也在努力通过节点soap,但我想我可能能帮上忙。我对承诺不太熟悉,但使用带有
(err,client)
的基本回调对我来说很有效(至少在创建客户机时是这样)。看起来您正在上下文外调用createClient()
?在我的例子中,我定义了var-soap=require('soap')
然后调用了soap.createClient()
。您好,谢谢您的回答。我正在使用[Promise.denodeify()]将soap.createClient转换为Promise样式的函数。(var createClient=Promise.denodeify(soap.createClient))。问题不在这里,我成功地将客户机用于其他wsdl文件。我的问题是在需要ssl证书的服务器中访问wsdl文件。我现在使用纯xml请求,因为我未能实例化客户端wit node-soap.Hmm-k。上面您是说使用setSecurity()
不起作用,因为您无法创建客户端。您是否重新定义了createClient()
,使其无需引用soap
对象即可访问?至于SSL,我也被困在这个问题上。¯_(ツ)_/''Yes createClient是一个基于soap.createClient的新函数。唯一的区别是它返回一个承诺,而不需要回调参数。您可以这样看:function createClient(url){return new promise(function(resolve,reject){soap.createClient(url,function(error,client){reject(error);resolve(client);}})
Ahh.TIL.Thank!我能够让SSL请求工作,但我没有使用承诺。在我的情况下,我必须再次显式地传递端点(soap.createClient(url,{endpoint:url},function(err,client){…}
)在客户端构造函数中允许使用https。但是,我不能说我理解您错误的格式,所以我想我没有帮助。对不起!嗨!我现在也在努力通过节点soap,但我想我可能能够提供帮助。我不太熟悉承诺,但使用(错误,客户端)的基本回调
对我很有效(至少是创建了客户端)。看起来你在上下文之外调用了createClient()
?在我的例子中,我定义了var soap=require('soap');
然后调用了soap.createClient()
。嗨,谢谢你的回答。我正在使用[Promise.denodeify()]()将soap.createClient转换为承诺式函数。(var createClient=promise.denodeify(soap.createClient))。问题不在这里,我成功地将客户端用于其他wsdl文件。我的问题是在需要ssl证书的服务器中访问wsdl文件。我现在使用纯xml请求,因为我无法实例化客户端wit-node-soap.Hmm-k。上面您说的是使用setSecurity()
无法工作,因为您无法创建客户端。您是否重新定义了createClient()
以便无需引用soap
对象即可访问它?至于SSL,我也遇到了这个问题。'_(ツ)_/''Yes createClient是一个基于soap.createClient的新函数。唯一的区别是它返回一个承诺,而不需要回调参数。您可以这样看:function createClient(url){return new promise(function(resolve,reject){soap.createClient(url,function(error,client){reject(error);resolve(client);}})
Ahh.TIL.Thank!我能够让SSL请求工作,但我没有使用承诺。在我的情况下,我必须再次显式地传递端点(soap.createClient(url,{endpoint:url},function(err,client){…}
)在客户端构造函数中允许使用https。但是,我不能说我理解您错误的格式,所以我想我没有帮助。对不起!很遗憾,结果相同。很遗憾,结果相同。