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