java – 将SoapHeader添加到org.springframework.ws.WebServiceMessage

前端之家收集整理的这篇文章主要介绍了java – 将SoapHeader添加到org.springframework.ws.WebServiceMessage前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何将对象添加到org. springframework.ws.WebServiceMessage的soap头中

这是我想要的结构:

  1. <soap:Header>
  2. <credentials xmlns="http://example.com/auth">
  3. <username>username</username>
  4. <password>password</password>
  5. </credentials>
  6. </soap:Header>

解决方法

基本上,您需要在客户端中使用 WebServiceMessageCallback修改消息,在创建之后但在发送之前.其余的代码已被@skaffman准确描述,所以整个内容可能如下所示:
  1. public void marshalWithSoapActionHeader(MyObject o) {
  2.  
  3. webServiceTemplate.marshalSendAndReceive(o,new WebServiceMessageCallback() {
  4.  
  5. public void doWithMessage(WebServiceMessage message) {
  6. try {
  7. SoapMessage soapMessage = (SoapMessage)message;
  8. SoapHeader header = soapMessage.getSoapHeader();
  9. StringSource headerSource = new StringSource("<credentials xmlns=\"http://example.com/auth\">\n +
  10. <username>"+username+"</username>\n +
  11. <password>"+password"+</password>\n +
  12. </credentials>");
  13. Transformer transformer = TransformerFactory.newInstance().newTransformer();
  14. transformer.transform(headerSource,header.getResult());
  15. } catch (Exception e) {
  16. // exception handling
  17. }
  18. }
  19. });
  20. }

就个人而言,我发现Spring-WS对于这样一个基本需求很难,应该修复SWS-479.

猜你在找的Java相关文章