java - 如何在java中的soap header中添加子元素

标签 java xml web-services spring

如何在 java spring webservice 的 soap header 中添加子元素。

我尝试了两种方法,但没有任何效果请告诉我需要做什么?

第一种方法:-

soapHeaderString.append("<tem:Culture>en_Us</tem:Culture><tem:AgentCode>PumpkinSafari</tem:AgentCode><tem:PartnerID></tem:PartnerID><tem:Password>PMP22#in</tem:Password>");

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
// Here we create a Source Tree
StringSource stringSource = new StringSource(soapHeaderString.toString());
transformer.transform(stringSource, soapHeader.getResult());

但它给我错误

The prefix "tem" for element "tem:Culture" is not bound.

第二种方法:-

SoapHeaderElement headerElement=soapMessage.getSoapHeader().addHeaderElement(new QName("http://tempuri.org/", "SOAPHeaderAuth","tem"));
headerElement.setText(soapHeaderString.toString());

它会产生未转义的序列,因此服务提供商会给出错误,因为它无法理解请求。

请帮我解决这个问题需要做些什么。

最佳答案

是的,在我的例子中它也提示相同的错误,元素“wsse:username”的前缀“username”未绑定(bind)。我尝试尽一切努力添加命名空间声明。但是,它不起作用!

“终于”,昨晚我能够通过一种变通方法做到这一点,将某种方式从 Spring org.springframework.ws.soap.SoapHeader 转换为 javax.xml.soap。 SOAPHeader。现在没有问题了!

SOAPMessage soapMessage = ((SaajSoapMessage) message).getSaajMessage();
SOAPHeader header = soapMessage.getSOAPHeader();
SOAPHeaderElement security = header.addHeaderElement(new QName(SCHEMA, "Security", SCHEMA_PREFIX));
SOAPElement usernameToken = security.addChildElement("UsernameToken", SCHEMA_PREFIX);
SOAPElement usernameElement = usernameToken.addChildElement("Username", SCHEMA_PREFIX);
SOAPElement passwordElement = usernameToken.addChildElement("Password", SCHEMA_PREFIX);

usernameElement.setTextContent(username);
passwordElement.setTextContent(password);

通过这个,我能够将 namespace 声明添加到 spring soap header 子元素中!

关于java - 如何在java中的soap header中添加子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16322634/

相关文章:

java - 从java应用程序(mysql,javafx)插入阿拉伯语数据时出现问题

web-services - 网站和网站 REST API 的 Symfony 错误处理

java - 不是 HornetQDestination : HornetQQueue

Java Hibernate 无法连接 MySQL 数据库

xml - 有没有比 MSXML 更好的 IDOMImplementation?

xml - 如何使用 local.xml 在 Magento 1.5 中设置默认布局?

javascript - 异步 xml 请求不返回

web-services - 具有高度动态数据的高吞吐量服务的案例研究或示例

c# - 如何从 WCF 服务响应中删除 outerXML

java - 在 Android 中通过 USB 将 ArrayList<integer>() 发送为 byte[] 格式