Node Js soap包

时间:2016-09-13 09:59:07

标签: node.js soap

我正在使用node soap包并尝试通过向其发送请求来调用WSDL函数。当我通过SoapUI客户端尝试它时,该功能正常工作。我想通过我的节点应用程序执行它。我以下列方式使用了'soap'节点包:

soap.createClient(url, function(err, client) {
        if (err) {
            console.log(err);
        } else {
            client.ProcessOrderRequest(exampleJsonRequest, function(error, processOrderResult, body) {
                console.log(error)
            })
        }
})

我在软件包的文档中看到一个示例,我们可以将json数据发送到该函数,而在SoapUI中我发送xml数据并且它可以工作。这在节点代码中不起作用。

如下所示:

Fault: 
   { faultcode: 500,
     faultstring: 'Invalid XML',
     detail: 'Error: Non-whitespace before first tag.\nLine: 0\nColumn: 1\nChar: \u001f',
     statusCode: 500 }

我尝试发送XML字符串,但仍然无法正常工作。有什么问题? 提前谢谢。

3 个答案:

答案 0 :(得分:3)

我在查找请求中的问题时遇到了同样的问题,但实际上是服务器发出的响应。从服务器上记录您的响应,然后再次检查它是有效的XML响应。 问题出在您的客户得到答案并尝试反序列化对JSON对象的XML响应,并且由于它无效时,会发出“无效XML”。

对于我来说,响应“ 404:未找到:/”以纯文本而不是XML消息的形式发送。当我更改为

"<error>404: not found: /</error>"

问题解决了,然后我意识到问题的根本原因在于WSDL绑定定义。

答案 1 :(得分:0)

看起来exampleJsonRequest格式无效。请查看您的soap请求和exampleJsonRequest。

答案 2 :(得分:0)

尝试使用client.lastRequest;。这是一个属性。它将以xml格式打印请求。打印完请求的xml后;将它与SOAP中的xml请求进行比较。 xml文件可能存在差异。 可能错误可能是因为请求的输入变量有两个相同的xmlns属性。这可能是因为SOAP包(它创建了请求的xml)。还有另一种添加参数的方法。使用XML String for the args。转到链接并尝试使用xml字符串创建参数。

稍后使用新的xml字符串方法重新验证请求的xml。

我认为这对仍然面临同样问题的其他用户非常有用。如果您仍然遇到问题,请添加您的查询。