节点肥皂:如何覆盖SOAP方法

时间:2018-04-22 18:28:38

标签: node.js soap soap-client node-soap

我一直在node-soapstrong-soap之间转换,因为它们都生成不同的有效负载并且工作方式类似(我所要做的就是更改需求路径,我可以在{{1}之间切换}}和strong-soap,而不更改现有代码)

但是,当我使用node-soap时,我确实生成了这些奇怪的有效负载。

这是一个例子

node-soap

所以一切都很好,除了我尝试调用的方法被称为:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:i0="http://services.redacted.com/Contracts" xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:tns="http://services.redacted.com/Contracts" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Header> <stns:SecurityToken xmlns:stns="http://services.redacted.com/Security"> <ServiceKey>123</ServiceKey> <UserId>123</UserId> <Username>123</Username> <Password>123</Password> </stns:SecurityToken> </soap:Header> <soap:Body> <DataService_GetProfiles_InputMessage /> </soap:Body> </soap:Envelope> 而不是GetProfiles以及随后尝试与之通信的服务我没有意识到我试图调用的方法。

什么工作(以及DataService_GetProfiles_InputMessage生成的内容)

strong-soap

现在这是有道理的。但是,由于其他限制,我们无法坚持<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:i0="http://services.redacted.com/Contracts" xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:tns="http://services.redacted.com/Contracts" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Header> <stns:SecurityToken xmlns:stns="http://services.redacted.com/Security"> <ServiceKey>123</ServiceKey> <UserId>123</UserId> <Username>123</Username> <Password>123</Password> </stns:SecurityToken> </soap:Header> <soap:Body> <GetProfiles /> </soap:Body> </soap:Envelope>

有没有办法可以覆盖请求的有效负载?它有没有原因产生这种奇怪的XML?

我的代码:

strong-soap

1 个答案:

答案 0 :(得分:0)

解决方案如下:

Documentation LIST ITEM 5

但是,您将覆盖要发送的整个文档。

我没有找到重写某些节点的方法。