【问题标题】:Node-SOAP not returning expected resultNode-SOAP 未返回预期结果
【发布时间】:2015-02-03 09:54:29
【问题描述】:

我正在尝试使用 node-soap 连接到第三方 Web 服务,但每当我使用来自 Web 服务的方法时,我都会得到一个巨大的对象,而不是正确响应的数据。

var soap = require('soap');
var soapWSDL = "https://staging.refcheckadvanced.co.za/RefCheck_Integrator/services/v2/RefCheck.svc?wsdl";

soap.createClient(soapWSDL, function (err, client) {
if (err) throw err;
    client.IsHealthy({}, function(err,result) {
        console.log(result);
    });
});

有谁知道我做错了什么?

PHP SOAP 信封:

    <SOAP-ENV:Body>
        <ns1:IsHealthy/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

节点 SOAP 信封:

    <soap:Body>
        <tns:IsHealthy xmlns:tns="http://tempuri.org/" xmlns="http://tempuri.org/">
        </tns:IsHealthy>
</soap:Body>
</soap:Envelope>

有没有办法将 node-soap 配置为使用与 PHP 相同的格式?

【问题讨论】:

  • 您是否检查了结果对象以获得所需的响应?

标签: node.js soap node-soap


【解决方案1】:

wsdl 是动态生成的还是静态生成的?它对我有用...

我的回复是:{ IsHealthyResult: '2015/02/03 11:56:48 AM' }

但是现在当我尝试 node-soap 时会抛出一个错误(你不处理)

试试这个,你(也许)会看到 err 已设置:

soap.createClient(soapWSDL, function (err, client) {
if (err) throw err;
    client.IsHealthy({}, function(err,result) {
        if (err) {
            console.log(err.message);
        } else {
            console.log(result);
        }
    });
});

返回:Cannot read property 'Body' of undefined

尝试使用node-inspector(跨平台)或NTVS(Windows + Visual Studio)进行调试

您会看到 node-soap 在\lib\client.js:183 中捕获了一个异常,并在回调中设置了错误。为什么它短暂地对我有用,我不知道... =P

但提醒您始终检查回调中的err

【讨论】:

  • 感谢您的帮助。请检查我的编辑,我认为这可能是问题所在。
猜你喜欢
  • 2011-08-09
  • 2010-09-22
  • 2021-05-17
  • 2018-02-19
  • 2018-03-23
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多