【问题标题】:node-soap createClient with certificates带有证书的 node-soap createClient
【发布时间】:2016-01-29 16:39:00
【问题描述】:

我正在尝试使用 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(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。问题是没有关于如何做到这一点的解释。我该怎么做和set up the my custom request with ssl

感谢您的帮助。

【问题讨论】:

  • 嗨!我现在也在努力通过 node-soap,但我想我可以提供帮助。我对 Promise 不太熟悉,但是使用 (err, client) 的基本回调对我来说很有效(至少可以创建客户端)。看起来你是在断章取意地打电话给createClient()?就我而言,我定义了var soap = require('soap'); ,然后称为soap.createClient()
  • 您好,感谢您的回答。我正在使用 [Promise.denodeify()] (npmjs.com/package/promise#promisedenodeifyfn) 将soap.createClient 转换为promise 风格的函数。 ( var createClient = Promise.denodeify(soap.createClient))。问题不在这里,我成功地将客户端用于其他 wsdl 文件。我的问题是在需要 ssl 证书的服务器中访问 wsdl 文件。我现在使用的是纯 xml 请求,因为我无法使用 node-soap 实例化客户端。
  • 嗯-k。上面您说使用setSecurity() 不起作用,因为您无法创建客户端。您是否重新定义了createClient(),使其无需引用soap 对象即可访问?至于 SSL,我也遇到了这个问题。 ¯_(ツ)_/¯
  • 是的createClient 是基于soap.createClient 的新功能。唯一的区别是它返回一个承诺,而不是需要一个回调参数。你可以这样看:function createClient(url) { return new Promise (function(resolve, reject) { soap.createClient(url, function(error, client) { reject(error); resolve(client); }})
  • 啊。直到。谢谢!我能够让 SSL 请求正常工作,但我没有使用 Promise。在我的情况下,我必须在客户端构造函数中再次显式传递端点 (soap.createClient(url, {endpoint: url}, function(err, client){ ... }) 以允许使用 https。不过,我不能说我理解你的错误格式,所以我想我没有帮助。对不起!

标签: node.js web-services ssl soap node-soap


【解决方案1】:

请尝试将此添加到您的 app.js:

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

【讨论】:

  • 不幸的是同样的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
相关资源
最近更新 更多