我收到以下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。
答案 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
}
}