簡體   English   中英

如何從SOAP主體獲取子元素?

[英]how to get child element from SOAP body?

如何從位於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>

我嘗試獲取,但是iterator.hasNext()返回false

SOAPBody soapBody = context.getMessage().getSOAPBody();

java.util.Iterator iterator = soapBody.getChildElements();
while (iterator.hasNext()) {
  SOAPBodyElement bodyElement = (SOAPBodyElement) iterator.next();
  String val = bodyElement.getValue();
  System.out.println("The Value is:" + val);
}

您可以使用wsdl生成Java類:

wsimport stock.wsdl -b stock.xml -b stock.xjb
wsimport -d generated http://example.org/stock?wsdl    

然后,您可以將SOAP服務作為本地方法調用。

其他一些工具:

wsdl2javawizard: http : //sourceforge.net/projects/wsdl2javawizard/

apache cxf: http : //cxf.apache.org/docs/wsdl-to-java.html

而不是獲取表單SOAP消息主體,請嘗試使用SOAP消息頭的子元素,例如context.getMessage()。getSOAPPart()。getEnvelope()。getHeader();。 詳細信息: http : //www.mkyong.com/webservices/jax-ws/jax-ws-soap-handler-in-client-side/

您可以獲得類似公理的值,

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM