Как добавить элемент, используя пользовательский SOAPHandler

Это связано с предыдущим вопросом. Я вытащил основную проблему, так как обновил большую часть кода, но у меня все еще есть проблема. Как сделать так, чтобы пользовательский класс 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 ответа

Попробуй это:

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

Помимо того, что линия

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

не является действительным Java, вы должны помнить, что addChildElement возвращает только что созданный дочерний элемент, и вам нужно добавить к нему текстовые узлы, а не к родительскому. Все, что делает ваш код - это добавление дочернего узла (пустого), затем добавление текстового узла, затем другого пустого дочернего узла, затем другого текстового узла.

Вы, вероятно, хотите это:

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

И последнее замечание: разговор с веб-сервисом SEE из Java приведет только к слезам и выпадению волос. Веб-службы Microsoft SEE не соответствуют стандартам (я знаю, что это шокирует).

Другие вопросы по тегам