Java 如何从SOAP主体中获取子元素?
如何从位于SOAP主体下的requestHeader获取clientCodeJava 如何从SOAP主体中获取子元素?,java,soap,Java,Soap,如何从位于SOAP主体下的requestHeader获取clientCode <soapenv:Body> <ser:GS> <!--Optional:--> <requestHeader> <!--Optional:--> <req:clientCode>KL7MU</req:clientCode>
<soapenv:Body>
<ser:GS>
<!--Optional:-->
<requestHeader>
<!--Optional:-->
<req:clientCode>KL7MU</req:clientCode>
<!--Optional:-->
<req:clientUsername>BLABLA</req:clientUsername>
</requestHeader>
</ser:GS>
</soapenv:Body>
而不是从SOAP消息体获取表单 尝试子元素形成SOAP消息头,如context.getMessage().getSOAPPart().getEnvelope().getHeader();
详细信息:您可以使用wsdl生成java类:
wsimport stock.wsdl -b stock.xml -b stock.xjb
wsimport -d generated http://example.org/stock?wsdl
然后可以将SOAP服务作为本地方法调用
其他一些工具:
wsdl2javawizard:
ApacheCxf:您可以获得axiom中的值
SOAPEnvelope mes = messageContext.getEnvelope();
SOAPHeader mesh = mes.getHeader();
SOAPBody mesb = mes.getBody();
OMElement messageId = mesh.getFirstChildWithName(new QName("http://www.w3.org/2005/08/addressing","MessageID"));
String messageIDStr = messageId.getText();
OMElement bodyChild = mesb.getFirstElement();
OMElement remoteAddress = bodyChild.getFirstChildWithName(new QName(
"http://YourNameSpaceURI",
"remoteAddress"));
String remoteAddressStr = remoteAddress.getText();
我不这么认为。特别是当我在axis2处理程序中时。应该有一种方法可以从与@Marlo达成一致的body中获取元素值,特别是当您处理某种SOAP控制台时,它应该处理大量不同的wsdl
SOAPEnvelope mes = messageContext.getEnvelope();
SOAPHeader mesh = mes.getHeader();
SOAPBody mesb = mes.getBody();
OMElement messageId = mesh.getFirstChildWithName(new QName("http://www.w3.org/2005/08/addressing","MessageID"));
String messageIDStr = messageId.getText();
OMElement bodyChild = mesb.getFirstElement();
OMElement remoteAddress = bodyChild.getFirstChildWithName(new QName(
"http://YourNameSpaceURI",
"remoteAddress"));
String remoteAddressStr = remoteAddress.getText();