import org.apache.axis.client.Call;
import org.apache.axis.client.Service
Service service = new Service();
Call call = (Call)service.createCall();
call.setTargetEndpointAddress(url); //url不带?wsdl
call.setEncodingStyle(encodingStyle);
call.setOperationName(new QName(targetNamespace, operation));// WSDL里面描述的targetNamespace名称空间,处理方法
call.addParameter("arg0",org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN); // 第一个为本次调用的方法增加参数,参数名称;第二个参数为参数类型:字符串类型;第三个参数指参数模式:入参
call.setReturnType( org.apache.axis.encoding.XMLType.XSD_STRING);//为本次调用方法设置返回类型,这里是字符串类型
String arg0 = “xml报文”;
String returnStr = (String) call.invoke( new Object[] { arg0 }); // 执行调用操作,result 保存返回的结果,invoke 的参数为实参
System.out.println("出参---->" + returnStr);//打印返回的结果
遇见问题一:
java.lang.NoClassDefFoundError:javax/wsdl/OperationType,这个是axis 连接过程中的异常,原因是缺少wsdl4j.jar包,将其导入到项目中就可以了。
注意:call.addParameter(“arg0”,org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN); //第一个参数名称的取值arg0应为wsdl文件的这个值