package cn.rx.oamp.util; import java.net.MalformedURLException; import java.rmi.RemoteException; import java.util.Date; import javax.xml.namespace.QName; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.ser.ArrayDeserializerFactory; import org.apache.axis.encoding.ser.ArraySerializerFactory; import org.apache.axis.encoding.ser.Base64DeserializerFactory; import org.apache.axis.encoding.ser.Base64SerializerFactory; import org.apache.axis.utils.JavaUtils; import cn.rx.oamp.pagemodel.ProgramPag; public class CallWebServiceUtil { /** * 取得webservice操作 * * @param message * :传值数组 * @param method * :webservice 方法名 * @param url * :wsdl路径 * @param nameSpace * :webservice命名空间 * @param parameter * :webservice参数数组 * @return */ public static Object getWebService(String[] message, String method, String url, String nameSpace, String[] parameter) { Service service = new Service(); Object obj = null; Call call; try { // 创建连接 call = (Call) service.createCall(); // 设置webservice地址 call.setTargetEndpointAddress(new java.net.URL(url)); // 设置调用的方法名(包含方法所在的命名空间) call.setOperationName(new QName(nameSpace, method)); // 设置调用时需要传入的参数(包含参数所属方法所对应的命名空间) call.addParameter(new QName(nameSpace, parameter[0]), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.addParameter(new QName(nameSpace, parameter[1]), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.setUseSOAPAction(true); // 设置返回参数类型 call.setReturnType(org.apache.axis.Constants.XSD_STRING); // 设置操作方法完整路径(包含命名空间与方法名) call.setSOAPActionURI(nameSpace + method); // 执行调用过程并传入调用时所需参数 obj = call.invoke(new Object[] { message[0], message[1] }); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ServiceException e) { // TODO Auto-generated catch block e.printStackTrace(); } return obj; } }
??说明:此工具类支持基本数据类型传递的webservice调用复杂类型需要自己封装pojo,且此工具类需要axis2jar包支持