从SOAP响应中获取价值

我有这样一句话:

SOAPMessage soapResponse = soapConnection.call(message, url);

和响应看起来:

 HTTP/1.1 200 OK Content-Type: text/xml;charset=UTF-8 Transfer-Encoding: chunked Date: Wed, 24 Jul 2013 07:44:39 GMT Server: Apache-Coyote/1.1       Server Server Error   3000 Server Error       

如何从这样的soap响应中获取String中的StatusCode(3000)? 我试过soapResponse.getSOAPBody()....但我能得到的只是:状态

编辑:

所以我做了:

  Detail detail = soapResponse.getSOAPPart().getEnvelope().getBody().getFault().getDetail(); Iterator detailEntries = detail.getDetailEntries(); while (detailEntries.hasNext()) { SOAPBodyElement bodyElement = (SOAPBodyElement) detailEntries.next(); Iterator val = bodyElement.getChildElements(); while (val.hasNext()) { SOAPBodyElement bodyElement2 = (SOAPBodyElement) val.next(); String val2 = bodyElement2.getValue(); logger.debug("The Value is:" + val2); } 

但得到了类转换exception} Edit2:解决方案:

 soapResponse.getSOAPPart().getEnvelope().getBody().getFault().getDetail().getTextContent().trim().substring(0, 4)); 

  • SOAPMessage开始,您需要调用SOAPMessage#getSOAPPart()来获取SOAPPart
  • 通过调用SOAPPart#getEnvelope()您可以获取SOAPEnvelope
  • 接下来,您将使用SOAPEnvelope#getBody()获取SOAPBody
  • 现在,您可以通过调用SOAPBody#getFault()来获取SOAPFault
  • 接下来,调用SOAPFault#getDetail()以获取Detail
  • 使用Detail#getDetailIterator()可以迭代Detail对象中的所有DetailEntry
  • 由于DetailEntry接口扩展了SOAPElement接口,因此可以通过调用getChildElements()来获取其内容; 这样,您可以导航到Status元素内的StatusCode元素并获取其值。
 soapResponse.getBody().getFault().getFaultCode() 

http://docs.oracle.com/javaee/5/api/javax/xml/soap/SOAPFault.html#getFaultCode()

 and iterate on : soapResponse.getBody().getFault().getDetailEntries() 

http://docs.oracle.com/javaee/5/api/javax/xml/soap/Detail.html#getDetailEntries()