Java从SOAP Response获取值

时间:2017-05-30 19:37:23

标签: java web-services soap soapui

我收到以下SOAP响应

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <ns0:Get_Response xmlns:ns0="urn:DAL:OrderShim_WS">
         <ns0:Order_Number>Order001165</ns0:Order_Number>
      </ns0:Get_Response>
   </soapenv:Body>
</soapenv:Envelope>

我需要从Response上面获取Order_Number。为此,我写下面的代码

import javax.xml.soap.MessageFactory;
import javax.xml.soap.MimeHeaders;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;

public class Test {
    public static void main(String[] args) {
        try {
            SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
            SOAPConnection soapConnection = soapConnectionFactory.createConnection();
            String url = "http://devlocal:8080/arsys/services/";
            SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(), url);
            soapResponse.writeTo(System.out);

            soapConnection.close();
        } catch (Exception e) {
            System.out.println("Exception : " + e);
        }
    }
}

我能够得到回应。但是如何获得Order_Number的价值。

我正在使用Java。

1 个答案:

答案 0 :(得分:0)

您应该检索SOAPBody对象并按如下方式迭代其节点:

SOAPBody body = soapResponse .getSOAPBody();

NodeList returnList = body.getElementsByTagName("YOUR_TAG");
for (int k = 0; k < returnList.getLength(); k++) {
    NodeList innerResultList = returnList.item(k).getChildNodes();
    // processing nodes
    }
}