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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
