我的网络服务生锈了,所以我希望我只是遗漏了一些明显的东西。
我有一个 WCF 服务,它部分地将它接收到的调用中继到第三方 SOAP 服务。该服务接收一个与需要发送的 SOAP 消息的正文相匹配的对象。
我已将基于 SOAP 服务的 WSDL 的服务引用添加到项目中,并创建了服务代理类的实例。我要调用的服务方法有 30 多个参数。
我可以用 调用它MyService.TheMethod(obj.value1, obj.value2, obj.value3...)
,但最好只传递原始对象或 XML 序列化它并将 XML 作为正文传递。
有什么可以允许更简单的方法还是我需要单独将 obj 的属性传递给 SOAP 方法?
更新
澄清根本问题。
我的 .NET 服务接受一些“组”
public class Person { string Name; int Age;}
public class Group { string Name; Person[] Individuals; }
然后我需要调用第三方 Web 服务 (TPWS)。从 WSDL 生成的代理类最终如下:
public class WSPerson { string Name; uint Age;}
public class WSGroup { string Name; WSPerson[] Individuals; }
我一直在做早期的原型设计,并通过 SoapUI 使用 TPWS,并使用与我的原始(.NET)类的命名匹配的标签:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.myabc123.com" xmlns:ns="http://schemas.datacontract.org/2004/07/" xmlns:sys="http://schemas.datacontract.org/2004/07/System" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<soapenv:Header>
<ws:ServiceCredentials>
<ws:SubscriberId>ABC</ws:SubscriberId>
<ws:SubscriberUser>Joe</ws:SubscriberUser>
<ws:SubscriberPassword>12345</ws:SubscriberPassword>
<!--Optional:-->
<ws:SubscriberIdentityStore></ws:SubscriberIdentityStore>
</ws:ServiceCredentials>
</soapenv:Header>
<soapenv:Body>
<Group>
<Name>Cool People</Name>
<Individuals>
<Person>
<Name>Tom</Name>
<Age>25</Age>
</Person>
<Person>
<Name>Jane</Name>
<Age>27</Age>
</Person>
</Individuals>
</Group>
</soapenv:Body>
</soapenv:Envelope>