Как добавить элемент, используя пользовательский SOAPHandler - PullRequest
0 голосов
/ 01 августа 2009

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

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

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

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

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

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

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

0 голосов
/ 08 сентября 2009

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

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