import java.net.URL; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import javax.xml.namespace.QName; import org.apache.axis.AxisEngine; import org.apache.axis.Constants; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.description.OperationDesc; import org.apache.axis.description.ParameterDesc; import org.apache.axis.soap.SOAPConstants; public class TestWS { static OperationDesc [] _operations = new OperationDesc[9]; public static void _initParam(String method,Map<String, String> params){ OperationDesc oper = new OperationDesc(); ParameterDesc param; oper.setName(method); Set<String> set = params.keySet(); Iterator<String> iter = set.iterator(); while (iter.hasNext()){ String key = iter.next(); param = new ParameterDesc(new QName("", key),ParameterDesc.IN,new QName("http://www.w3.org/2001/XMLSchema", "string"),java.lang.String.class, false, false); param.setOmittable(true); oper.addParameter(param); } oper.setReturnType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string")); oper.setReturnClass(java.lang.String.class); oper.setReturnQName(new javax.xml.namespace.QName("", "return")); oper.setStyle(org.apache.axis.constants.Style.WRAPPED); oper.setUse(org.apache.axis.constants.Use.LITERAL); _operations[0] = oper; } public static void initService(String ws_url,Map<String, String> params,String method){ _initParam(method,params); int size = params.size(); int i = 0; Object param[] = new Object[size]; Set<String> set = params.keySet(); Iterator<String> iter = set.iterator(); while (iter.hasNext()){ String key = iter.next(); param[i] = params.get(key); i ++; } try { Service service = new Service(); Call call = (Call) service.createCall(); call.setOperation(_operations[0]); call.setUseSOAPAction(true); call.setSOAPActionURI(""); call.setEncodingStyle(Constants.NS_PREFIX_SCHEMA_XSD); call.setProperty(Call.SEND_TYPE_ATTR, Boolean.FALSE); call.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE); call.setSOAPVersion(SOAPConstants.SOAP11_CONSTANTS); call.setTargetEndpointAddress(new URL(ws_url)); call.setOperationName(new QName(ws_url,method)); String ret = (String) call.invoke(param); System.out.println(ret); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { String method = "method";//接口方法 String xml = "xml";//接口参数 String ws_url = "ws_url";//接口地址 Map<String, String> params = new LinkedHashMap<String, String>();//使用linkedhashmap保持参数put的先后顺序与接口方法参数顺序一致 params.put("xml", xml);//此处需要注意key值需要与接口方法的参数名字一致 params.put("xml1", xml);// params.put("xml2", xml);//多个参数需要put多次,put的参数个数需要与接口参数个数一致 initService(ws_url, params, method); } }
使用到一下jar,axis.jar、axis-ant.jar、commons-discovery-0.2.jar、commons-logging-1.0.4.jar、jaxrpc.jar、mail-1.4.jar、wsdl4j-1.5.1.jar