【问题标题】:Use WebServiceTemplate to call a Web Service Operation with mutliple parts使用 WebServiceTemplate 调用具有多个部分的 Web 服务操作
【发布时间】:2014-04-02 22:10:48
【问题描述】:

我有一个由两部分组成的 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 服务操作的正确方法是什么?

【问题讨论】:

    标签: spring web-services jaxb wsdl webservicetemplate


    【解决方案1】:

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

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

    ma​​rshalSendAndReceive() 调用中使用 WebServiceMessageCallback,在 doWithMessage(WebServiceMessage message) 函数中,我使用

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

    获取和修改soap消息。

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 2016-10-14
      相关资源
      最近更新 更多