我正在尝试从WS SOAP响应中读取2个值。目前我无法执行此操作,我尝试了多种方法但均未成功。
我只对OperationStatus和SessionId感兴趣。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<DoLoginResponse xmlns="censored">
<DoLoginResult>
<OperationStatus>true</OperationStatus>
<StatusMessage/>
<SecurityProfile>
<User>
<UserID>720eeac1-7134-4587-b81d-b7431718c51b</UserID>
</User>
<Session>
<SessionId>eb63f534-322f-4014-88e0-72e6a6a5b167</SessionId>
</Session>
<IsFirstLogon>false</IsFirstLogon>
<IsSystemOwner>true</IsSystemOwner>
</SecurityProfile>
<Authenticated>true</Authenticated>
<UpgradeRecommended>true</UpgradeRecommended>
</DoLoginResult>
</DoLoginResponse>
</soap:Body>
</soap:Envelope>
到目前为止,这就是我编写的代码。
SOAPBody sb = response.getSOAPBody();
Node LoginResponse = (Node)sb.getFirstChild();
Node LoginResult = (Node)LoginResponse.getFirstChild();
Node OperationStatus = (Node)LoginResult.getFirstChild();
if(OperationStatus.getFirstChild().getTextContent()=="true"){
_auth = true;
_Session = "";//get SessionId here
}else{
_auth = false;
return response;
}
由于某种原因,我永远不会进入if语句,因此我不知道如何完成此操作。
最佳答案
尝试使用getElementsByTagName访问节点,并使用equals方法比较字符串值。Node OperationStatus = sb.getElementsByTagName("OperationStatus").item(0);if("true".equals(OperationStatus.getFirstChild().getTextContent()))...