我正在使用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字符串,但仍然无法正常工作。有什么问题? 提前谢谢。
答案 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。
我认为这对仍然面临同样问题的其他用户非常有用。如果您仍然遇到问题,请添加您的查询。