0

我无法向服务发送正确的参数。

使用的代码:

var soap = require('soap');
var url = 'http://example.com';

soap.WSDL.prototype.ignoredNamespaces = ['targetNamespace', 'typedNamespace'];

var args = {'name':'test'};

soap.createClient(url, function(err, client) {
    client.Hello(args, function(err,result,res){
        console.log(result);
        console.log(client.lastRequest);
    });
});

Hello 函数应返回字符串“Hello test!”。但是,我得到:

'Hello null !'

发送的请求是:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ....><soap:Body>
<tns:Hello xmlns:tns="http://example/">
    <tns:name>test</tns:name>
</tns:Hello></soap:Body></soap:Envelope>

其中测试是有趣的部分。服务期待

<name>test</name>

没有命名空间(我用http://www.soapclient.com/测试了这个)

所以,问题是:如何在没有附加 tns 的情况下发送请求参数?(tns:name => name) 谢谢!

4

2 回答 2

3

覆盖命名空间的正确方法是发送如下参数:

var params = { ':name' : 'test' }

它在文档中:覆盖命名空间前缀

于 2016-05-25T15:45:43.650 回答
0

在您的代码中,而不是将参数传递为

var args = {'name':'test'};

尝试

var args = {arg0: 'testName'};

我不是专家,但在调用 SOAP 客户端时从 node.js 传递参数对我很有用。

于 2016-05-17T07:52:25.013 回答