Node Js soap包

3

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

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数据并且它有效。但在node代码中却无法工作。

它会出现以下错误:

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

我尝试发送XML字符串,但仍无法工作。可能是什么问题? 提前感谢。

3个回答

4
我也曾遇到同样的问题,在请求中寻找问题,但实际上问题在服务器的响应中。记录下服务器响应并仔细检查其是否为有效的XML响应。
问题出现在客户端获得答案并尝试将XML响应反序列化为JSON对象时,由于它不是有效的,就会发出“无效的XML”错误信息。
在我的情况下,“404:未找到:/”作为纯文本而不是XML消息发送。当我进行更改以...

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

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

0

看起来 exampleJsonRequest 是无效的格式。请检查您的 SOAP 请求和 exampleJsonRequest。


我尝试使用一个简单的JSON,例如{"test": "Test"}代替exampleJsonRequest,但仍然出现相同的错误。 - XCEPTION

0

尝试使用client.lastRequest;属性。它可以打印XML格式的请求。在打印请求的XML之后,将其与SOAP中的XML请求进行比较。可能是XML文件中有差异导致错误。可能是由于请求的输入变量有两个相同的xmlns属性造成的。这可能是SOAP包(创建请求的XML的软件)的问题。还有另一种方法可以添加参数。使用 XML字符串的args。转到链接并尝试使用XML字符串创建参数。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接