如何使用自定义SOAPHandler添加元素

时间:2009-07-31 21:06:02

标签: java xml soaphandler

这与previous question有关。我已经解决了主要问题,因为我已经更新了大部分代码,但我仍有问题。如何让自定义SOAPHandler类向SOAP消息添加新元素?我需要在邮件中添加用户名和密码。如果我使用:

public boolean handleMessage(SOAPMessageContext context) {

  SOAPMessage msg = context.getMessage();
  SOAPPart part = msg.getSOAPPart();
  SOAPEnvelope envelope = part.getEnvelope();

  .... //additional header information

  SOAPElement element.addChildElement("Username", "sse");
  element.addTextNode("user1");
  element.addChildElement("Password", "sse");
  element.addTextNode("1234");
}

我最终会关闭标签并且不包含值:

<sse:Username/>user1
<sse:Password/>1234

我希望最终得到如下格式的用户名和密码:

<sse:Username>user1</sse:Username>
<sse:Password>1234</sse:Password>

如何获取元素中包含的值(user1和1234)?

2 个答案:

答案 0 :(得分:0)

试试这个:

element.addChildElement("Password", "sse").addTextNode("1234");

答案 1 :(得分:0)

除了行

之外
SOAPElement element.addChildElement("Username", "sse");

是无效的java,您需要记住addChildElement返回新创建的子元素,并且您需要将文本节点添加到该元素,而不是父节点。您的所有代码都在添加一个子节点(空),然后添加一个文本节点,然后添加另一个空子节点,再添加另一个文本节点。

你可能想要这个:

element.addChildElement("Username", "sse").addTextNode("user1");
element.addChildElement("Password", "sse").addTextNode("1234");

作为最后一点,从Java与SEE网络服务交谈只会导致眼泪和脱发。 Microsoft SEE Web服务不符合标准(令人震惊,我知道)。