0

我有一个由两部分组成的 WSDL 消息:

<wsdl:message name="GenericWebServiceOperationRequestMessage">
    <wsdl:part name="Body" element="ns:MyRequest"/>
    <wsdl:part name="Security" element="ns:Security"/>
</wsdl:message>

我正在使用的工作流是在 wsdl 上运行 xjc.exe 以生成 JAXB 工件,然后使用它们来调用 Web 服务。好吧,这一切都很好,除了我无法弄清楚使用 Spring WebServiceTemplate 调用具有多个部分的消息的正确工作流程是什么。我可以创建 MyRequest 和 Security 对象(它们是复杂类型),但是函数:

WebServiceTemplate().marshalSendAndReceive(对象 requestPayload); 只需要一个对象。不是零件...调用这种类型的 Web 服务操作的正确方法是什么?

4

1 回答 1

0

我想我没有收到答复的原因是因为这是不可能的。如果我错了,请纠正我,但似乎 WebServiceTemplate 只支持包装的Web 服务调用。也就是说,仅发送单个输入并接收单个输出对象的操作。

对于这样的情况,您有两个或多个对象对齐,我能看到的唯一解决方案是创建最复杂的对象并在调用中使用 Webservice 回调函数根据需要手动将 SOAP 元素创建到正文或标题上。

marshalSendAndReceive()调用中使用WebServiceMessageCallback ,在函数中,我使用doWithMessage(WebServiceMessage message)

SOAPMessage soapMessage = ((SaajSoapMessage)message).getSaajMessage();

获取和修改soap消息。

于 2014-05-05T16:52:21.587 回答