加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Soap请求 – 读取soap响应

发布时间:2020-12-14 05:39:44 所属栏目:Java 来源:网络整理
导读:我正在尝试从webservice获取响应中的具体值.不幸的是我不知道该怎么做我使用stackoverflow上找到的代码来创建soap请求并将响应内容写入stdout: private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception { TransformerFactory tr
我正在尝试从webservice获取响应中的具体值.不幸的是我不知道该怎么做我使用stackoverflow上找到的代码来创建soap请求并将响应内容写入stdout:
private static void printSOAPResponse(SOAPMessage soapResponse) throws Exception {
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    Source sourceContent = soapResponse.getSOAPPart().getContent();
    System.out.print("nResponse SOAP Message = ");
    StreamResult result = new StreamResult(System.out);
    transformer.transform(sourceContent,result);
}

这一切都很好,但我不需要全面的回应内容:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bin="http://localhost/WebService/bindings" xmlns:typ="http://localhost/WebService/types">
   <soapenv:Header/>
   <soapenv:Body>
      <bin:doActionResponse>
         <bin:out>
            <typ:result>
               <typ:code>?</typ:code>
               <typ:description>?</typ:description>
            </typ:result>
         </bin:out>
      </bin:doActionResponse>
   </soapenv:Body>
</soapenv:Envelope>

我只需要这个响应的代码和描述的价值.我该怎么做?

解决方法

以下是其他一些xml示例的整个工作示例;
public static void main(String[] args) throws IOException,SOAPException {

    String xmlInput = "  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://litwinconsulting.com/webservices/">n"
            + "   <soapenv:Header/>n"
            + "   <soapenv:Body>n"
            + "   <web:RES>n"
            + "      <web:RETURNCODE>100 </web:RETURNCODE> n"
            + "   </web:RES>n"
            + "      <web:GetWeather>n"
            + "         <!--Optional:-->n"
            + "         <web:City>%CITY%</web:City>n"
            + "      </web:GetWeather>n"
            + "   </soapenv:Body>n"
            + "  </soapenv:Envelope>";

    MessageFactory factory = MessageFactory.newInstance();
    SOAPMessage message = factory.createMessage(
            new MimeHeaders(),new ByteArrayInputStream(xmlInput.getBytes(Charset
                    .forName("UTF-8"))));

    SOAPBody body = message.getSOAPBody();

    NodeList returnList = body.getElementsByTagName("web:RES");

    boolean isSuccess = false;
    for (int k = 0; k < returnList.getLength(); k++) {
        NodeList innerResultList = returnList.item(k).getChildNodes();
        for (int l = 0; l < innerResultList.getLength(); l++) {
            if (innerResultList.item(l).getNodeName()
                    .equalsIgnoreCase("web:RETURNCODE")) {
                isSuccess = Integer.valueOf(innerResultList.item(l)
                        .getTextContent().trim()) == 100 ? true : false;
            }
        }
    }
    if (isSuccess) {
        NodeList list = body.getElementsByTagName("web:GetWeather");

        for (int i = 0; i < list.getLength(); i++) {
            NodeList innerList = list.item(i).getChildNodes();

            for (int j = 0; j < innerList.getLength(); j++) {
                System.out.println(innerList.item(j).getNodeName());
                System.out.println(innerList.item(j).getTextContent());
            }
        }
    }

}

如果需要,进口;

> java.io.ByteArrayInputStream;> java.io.IOException;> java.nio.charset.Charset;> javax.xml.soap.MessageFactory;> javax.xml.soap.MimeHeaders;> javax.xml.soap.SOAPBody;> javax.xml.soap.SOAPException;> javax.xml.soap.SOAPMessage;> org.w3c.dom.NodeList;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读