Node Soap:如何覆盖 SOAP 方法的请求负载
Node Soap: How to override request payload for SOAP method
我一直在 node-soap
和 strong-soap
之间切换,因为它们都生成不同的有效负载并且工作方式相似(我所要做的就是更改 require 路径,我可以在 [=13] 之间切换=] 和 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>
现在说得通了。但是,由于其他限制,我们不能坚持 strong-soap
.
有什么方法可以覆盖请求的负载?它产生这种奇怪的现象是有原因的吗 XML?
我的代码:
this.dataClientConnection.DataService.BasicHttpBinding_DataService.GetProfiles()
解决方案如下:
但是,您将覆盖您发送的整个文档。
我没有找到覆盖某些节点的方法。
我一直在 node-soap
和 strong-soap
之间切换,因为它们都生成不同的有效负载并且工作方式相似(我所要做的就是更改 require 路径,我可以在 [=13] 之间切换=] 和 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>
现在说得通了。但是,由于其他限制,我们不能坚持 strong-soap
.
有什么方法可以覆盖请求的负载?它产生这种奇怪的现象是有原因的吗 XML?
我的代码:
this.dataClientConnection.DataService.BasicHttpBinding_DataService.GetProfiles()
解决方案如下:
但是,您将覆盖您发送的整个文档。
我没有找到覆盖某些节点的方法。