方法1:在简单的使用后面:
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;
}
}