Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从SOAP主体中获取子元素?_Java_Soap - Fatal编程技术网

Java 如何从SOAP主体中获取子元素?

Java 如何从SOAP主体中获取子元素?,java,soap,Java,Soap,如何从位于SOAP主体下的requestHeader获取clientCode <soapenv:Body> <ser:GS> <!--Optional:--> <requestHeader> <!--Optional:--> <req:clientCode>KL7MU</req:clientCode>

如何从位于SOAP主体下的requestHeader获取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();