package com.cai.test; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.StringReader; import java.net.HttpURLConnection; import java.net.URL; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.InputSource; public class ServiceTest2 { public static void main(String[] args)throws Exception { getResult("李涛", "getValue"); } /** * * @param condition 参数(值) * @param methodName 方法名称 * @param iMethodArgsName 参数(名称) * @return */ public static String setRequestSoapMsg(String condition, String methodName, String iMethodArgsName){ String soapMsg="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas." + "xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http:" + "//schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http" + "://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http:" + "//www.w3.org/2001/XMLSchema\">"+ "<SOAP-ENV:Body>"+ "<m:"+methodName+" xmlns:m=\"http://test.cs.com/\">" + //http://test.cs.com ==》wsdl 种对应的namespace "<"+iMethodArgsName+">"+ condition+"</"+iMethodArgsName+">" + "</m:"+methodName+">" + "</SOAP-ENV:Body>"+ "</SOAP-ENV:Envelope>"; System.out.println("soapMsg:"+soapMsg); return soapMsg; } public static String getResult(String condition, String methodName) throws Exception { String soapMsg = setRequestSoapMsg( condition,methodName,"condition"); URL u = null; HttpURLConnection conn = null; OutputStream out = null; InputStream in = null; InputStreamReader isr = null; StringBuffer sb = new StringBuffer(); try { u = new URL("http://localhost:8080/testService/sfws/testService?wsdl"); conn = (HttpURLConnection)u.openConnection(); conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQPinyin 689; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"); conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8"); conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setDoInput(true); conn.setConnectTimeout(60*1000); conn.setReadTimeout(60*1000); out = conn.getOutputStream(); out.write(soapMsg.getBytes("utf-8")); if(conn.getResponseCode()==200){ in = conn.getInputStream(); isr = new InputStreamReader(in,"utf-8"); char[] c = new char[1024]; int a = isr.read(c); while(a!=-1){ sb.append(new String(c,0,a)); a = isr.read(c); } } } catch (Exception e){ throw e; } finally{ if(conn!=null){ conn.disconnect(); } try { if(in!=null){ in.close(); } if(isr!=null){ isr.close(); } if(out!=null){ out.close(); } } catch (IOException e) { throw e; } } Document doc = getDocFromXml(sb.toString()); String result = getValueByTagName(doc, "return", 0);//result==>@WebResult(name = "result")(如果没有注解是 return) System.out.println("result:"+result); return result; } /** * xml 转 Document对象 * @param xml * @return Document * @throws Exception */ public static Document getDocFromXml(String xml) throws Exception{ DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance(); DocumentBuilder dombuilder = domfac.newDocumentBuilder(); StringReader sr=new StringReader(xml); InputSource is=new InputSource(sr); Document doc = dombuilder.parse(is); return doc; } /** * * @param doc xml * @param tagName 标签名 * @param itemIndex 第几个 * @return */ public static String getValueByTagName(Document doc,String tagName, int itemIndex){ String value = ""; if(doc != null && tagName != null && !"".equals(tagName)){ Node node = doc.getElementsByTagName(tagName).item(itemIndex); if(node != null) value = node.getTextContent().trim(); } return value; } }