Here is the response I get from server,
Although I can take the MM7Version element value, I cannot get the Status element value. it returns null.
SoapMeesage XML Response:
TID.BIP_TRASNID.20041103.135200.001
5.6.0
2602Invalid status
Java Code:
SOAPMessage response = connection.call(message, endpoint);
SOAPEnvelope env= response.getSOAPPart().getEnvelope();
SOAPBody sb = env.getBody();
Name ElName = env.createName("Status");
//Get child elements with the name XElement
Iterator it = sb.getChildElements(ElName);
//Get the first matched child element.
//We know there is only one.
SOAPBodyElement sbe = (SOAPBodyElement) it.next();
//Get the value for XElement
String MyValue = sbe.getValue();
System.out.println("MyValue: "+MyValue);
解决方案
private static MmsResponse getMmsResponse(SOAPMessage response) throws SOAPException {
MmsResponse mmsResponse = new MmsResponse();
Iterator itr=response.getSOAPBody().getChildElements();
while (itr.hasNext()) {
Node node=(Node)itr.next();
if (node.getNodeType()==Node.ELEMENT_NODE) {
Element ele=(Element)node;
switch (ele.getNodeName()) {
case "MM7Version":
mmsResponse.setMm7Version(ele.getTextContent());
break;
case "MessageID":
mmsResponse.setMessageID(ele.getTextContent());
break;
case "Status":
NodeList statusNodeList = ele.getChildNodes();
Status status = new Status();
for(int i=0;i
Element statusElement = (Element) statusNodeList.item(i);
switch (statusElement.getNodeName()) {
case "StatusCode":
status.setStatusCode(ele.getChildNodes().item(i).getTextContent());
break;
case "StatusText":
status.setStatusText(ele.getChildNodes().item(i).getTextContent());
break;
default:
break;
}
}
mmsResponse.setStatus(status);
break;
default:
break;
}
} else if (node.getNodeType()==Node.TEXT_NODE) {
//do nothing here most likely, as the response nearly never has mixed content type
//this is just for your reference
}
}