use*_*873 4 java xml spring web-services
如何在java spring webservice中的soap头中添加子元素.
我尝试了两种方法,但没有任何工作请告诉我需要做什么?
第一种方法: -
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());
Run Code Online (Sandbox Code Playgroud)
但它给了我错误
The prefix "tem" for element "tem:Culture" is not bound.
Run Code Online (Sandbox Code Playgroud)
第二种方法: -
SoapHeaderElement headerElement=soapMessage.getSoapHeader().addHeaderElement(new QName("http://tempuri.org/", "SOAPHeaderAuth","tem"));
headerElement.setText(soapHeaderString.toString());
Run Code Online (Sandbox Code Playgroud)
它产生未转义的sequqnce,因此服务提供商会因为无法理解请求而给出错误.
请帮助我解决问题需要做些什么.
是的,在我的情况下它也提示相同的错误,元素"wsse:username"的前缀"username"没有绑定.我尝试了一切来添加名称空间声明.但是,它不起作用!
"终于",我昨晚能够做一个解决方法,从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);
Run Code Online (Sandbox Code Playgroud)
通过这个我能够添加命名空间声明到spring soap header子元素!
JAX-WS 用户
我建议使用消息处理程序:
http://www.javadb.com/using-a-message-handler-to-alter-the-soap-header-in-a-web-service-client
Spring Web 服务用户
存在类似的概念:
http://arcanetechnotes.blogspot.com/2008/12/modifying-soap-headers-with-spring-web.html
问题表明它无法理解tem名称空间,因此可能在标头中注册名称空间:
soapHeader.addNamespaceDeclaration("tem", "http://whatever.namespace.com/");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16131 次 |
| 最近记录: |