axis和cxf框架客户端调用web Service
?在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的调用方式比较简单,便于操作