在web Service领域,axis和cxf是常用的两种框架,在企业开发中常使用wsdl文件作为传输的形式,下面就这两种框架的客户端调用方式进行演示:
1axis方式:
//以下省略try catch语句
String endpoint = "url";//调用的web Service的wsdl地址
// 调用过程
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new javax.xml.namespace.QName("namespace","method"));//namespace命名空间,method方法名
call.addParameter("paramName",
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);// param操作的参数,后面的参数是参数的类型
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型
call.setUseSOAPAction(true);
// 给方法传递参数,并且调用方法
Object[] obj = new Object[] { text };//text为参数值
Object result= call.invoke(obj);//调用web Service
System.out.println("Result is : " + result);
CXF 调用方式:
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
org.apache.cxf.endpoint.Client client = dcf.createClient("url");
//url为调用webService的wsdl地址
QName name=new QName("namespace","methodName");//namespace是命名空间,methodName是方法名
String param="paramvalue";//paramvalue为参数值
Object[] objects=client.invoke(name,param); //调用web Service
//输出调用结果
System.out.println(objects[0].toString());
相比之下,cxf的调用方式比较简单,便于操作