无法从Meteor的HTTP方法向SOAP方法发送参数

时间:2015-01-28 16:38:51

标签: http soap meteor

我使用meteor的http包连接到通过SOAP消息进行通信的服务器。以下是代码(没有原始URL,名称空间,方法名称和参数):

HTTP.call('POST', 'http://soap-service-url.com', {
    auth: 'user:password',
    headers: {
        SOAPTarget: 'http://soap-service-url.com',
        SOAPAction: 'http://required-namespace.com/methodName',
        'Content-Type': 'text/xml'
    },
    params: {
        parameter1: "parameterValue",
        parameter2: '<?xml version="1.0"?><some-xml-goes-here>',
    },
    content: '<?xml version="1.0" encoding="utf-8"?>' +
                 '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
                                'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
                                'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' + 
                   '<soap:Body> ' +
                     '<m:methodName xmlns:m="http://required-namespace.com"> ' +
                        '<m:parameter1 xsi:type="xsd:string">parameterValue</m:parameter1>' +
                        '<m:parameter2 xsi:type="xsd:string"><![CDATA[<?xml version="1.0"?><some-xml-goes-here>]]></m:parameter2>' +
                     '</m:methodName> ' +
                   '</soap:Body> ' +
                 '</soap:Envelope>'

}, function (err, result) {
    if (err) {
        console.log('error occurred..');
        console.log(err);
        return;
    }
    console.log(result);
    console.log('----------------------');
});

当我调用没有参数的方法时,我可以获得预期的输出。但是当我用参数调用方法时,我得到了意想不到的输出。由于content属性中给出的参数没有传递,我添加了params属性,即使这样我也无法收到预期的输出。为了测试这个问题,我创建了一个节点js应用程序,并使用node-soap模块连接到同一个服务器。我可以通过client.myMethod(args, callback[, options])上的参数传递参数并获得预期结果。如何在使用meteor的http包时传递参数?

1 个答案:

答案 0 :(得分:1)

  1. 要回答上述问题:在content http.call parameter1之前将content xml建为字符串,Error: Cannot parse response字符串中包含2个值。

  2. 上面的代码示例帮助了我很多,因为我无法让node-soap在Meteor中工作;永远得到{{1}} - 谢谢 - 我知道这是一篇很老的帖子,你现在可能已经找到了答案。