从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()
- 当第二个JPanel添加时,Java CardLayout JPanel向上移动
- 从toString表示生成Java对象
- 使用java在文本文件中查找字符串的最快方法
- 在Java对象中存储MATLAB结构
- 使用AnnotationProcessor构建Maven,解析src / main / java中的文件,并生成源代码到generate-test-sources / test-annotations
- 在一个ArrayList中使用两个迭代器
- JavaDocs抛出IllegalArgumentException
- SpringMVC / mockMVC / jsonpath比较字符串列表
- 打印2D ArrayList Matrix的值