如何将SOAP消息转换为SPRING WS的webServiceTemplate.sendSourceAndReceiveToResult

时间:2013-10-01 07:59:28

标签: java soap ws-security spring-ws wss4j

我有一个SOAP消息调用正在使用我的soapUI

<soapenv:Envelope xmlns:cen="http://netadmin.ghl.com/centralizedconfig" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Header>
          <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
             <wsse:UsernameToken wsu:Id="UsernameToken-21">
                <wsse:Username>admin</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">secret</wsse:Password>
                <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">xo6ADfFZ5aqvukQZjUb6IQ==</wsse:Nonce>
                <wsu:Created>2013-10-01T06:59:20.202Z</wsu:Created>
             </wsse:UsernameToken>
             <wsu:Timestamp wsu:Id="TS-20">
                <wsu:Created>2013-10-01T06:58:47.521Z</wsu:Created>
                <wsu:Expires>2013-10-01T07:10:47.521Z</wsu:Expires>
             </wsu:Timestamp>
          </wsse:Security>
       </soapenv:Header>
       <soapenv:Body>
          <cen:GetXMLRequest>
             <cen:IpAddress>10.36.28.211</cen:IpAddress>
          </cen:GetXMLRequest>
       </soapenv:Body>
    </soapenv:Envelope>

每当我在我的SOAP UI上运行它来测试我的Web服务时,它的完美工作就好了, 我很难用我的 webServiceTemplate.sendSourceAndReceiveToResult 调用来翻译这条肥皂信息,我是网络服务新手 我不知道如何将标题消息合并到我的代码中。 有人可以帮我弄这个吗?

客户电话:

webServiceTemplate.sendSourceAndReceiveToResult      (网址,来源,结果);

我似乎无法在参数

中包含安全标头

1 个答案:

答案 0 :(得分:1)

我在Spring客户端应用程序上下文中添加了一个拦截器

    <bean id="wss4jSecurityInterceptor"
    class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
       <property name="securementActions" value="UsernameToken" />
       <property name="securementUsername" value="user" />
       <property name="securementPassword" value="password" />
       <property name="validationCallbackHandler" ref="callbackHandler" />
    </bean>