我有一个由两部分组成的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(Object requestPayload);只需要一个对象。不是部分......调用这种类型的Web服务操作的正确方法是什么?
答案 0 :(得分:0)
我想我没有得到答案的原因是因为这是不可能的。如果我错了,请纠正我,但似乎WebServiceTemplate仅支持包装 Web服务调用。也就是说,仅发送单个输入并接收单个输出对象的操作。
对于这样的情况,你有两个或多个对象对齐,我能看到的唯一解决方案是创建最复杂的对象,并在调用中使用Webservice回调函数,根据需要在body或header上手动创建SOAP元素
在 marshalSendAndReceive()调用中使用 WebServiceMessageCallback ,在 doWithMessage(WebServiceMessage message)
函数中,我使用
SOAPMessage soapMessage = ((SaajSoapMessage)message).getSaajMessage();
获取并修改肥皂信息。