package hanwl.TestDemo; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.commons.io.IOUtils; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.xml.sax.InputSource; public class TestWebservice2 { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String wsdl = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"; int timeout = 1000; StringBuffer sb = new StringBuffer(""); sb.append("<?xml version="1.0" encoding="UTF-8"?>"); sb.append("<soapenv:Envelope " + " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' " + " xmlns:q0='http://WebXml.com.cn/' " + " xmlns:xsd='http://www.w3.org/2001/XMLSchema' " + " xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' >"); sb.append("<soapenv:Body>"); sb.append("<q0:getWeatherbyCityName>"); sb.append("<q0:theCityName>唐山</q0:theCityName> "); sb.append("</q0:getWeatherbyCityName>"); sb.append("</soapenv:Body>"); sb.append("</soapenv:Envelope>"); // HttpClient发送SOAP请求 System.out.println("HttpClient 发送SOAP请求"); HttpClient client = new HttpClient(); PostMethod postMethod = new PostMethod(wsdl); // 设置连接超时 client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout); // 设置读取时间超时 client.getHttpConnectionManager().getParams().setSoTimeout(timeout); // 然后把Soap请求数据添加到PostMethod中 RequestEntity requestEntity = new StringRequestEntity(sb.toString(), "text/xml", "UTF-8"); //设置请求头部,否则可能会报 “no SOAPAction header” 的错误 //postMethod.setRequestHeader("SOAPAction",""); // 设置请求体 postMethod.setRequestEntity(requestEntity); int status = client.executeMethod(postMethod); // 打印请求状态码 System.out.println("status:" + status); // 获取响应体输入流 InputStream is = postMethod.getResponseBodyAsStream(); // 获取请求结果字符串 String result = IOUtils.toString(is); Document dc = strXmlToDocument(result); // Element root = dc.getRootElement(); // System.out.println(root.getName()); // System.out.println("result: " + result); } public static Document strXmlToDocument(String parseStrXml){ Document document = null; try { document = DocumentHelper.parseText(parseStrXml); Element root = document.getRootElement(); List<Element> list = root.elements(); getElement(list); } catch (DocumentException e) { e.printStackTrace(); } return document; } private static void getElement(List<Element> sonElemetList) { // Map<String,String> map = new HashMap<String, String>(); for (Element sonElement : sonElemetList) { if (sonElement.elements().size() != 0) { System.out.println(sonElement.getName() + ":"); getElement(sonElement.elements()); }else{ System.out.println(sonElement.getName() + ":"+ sonElement.getText()); } } } }
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/11259.html