Aix2客户端代码

  1. package com.ysj;  
  2.   
  3. import javax.xml.namespace.QName;  
  4.   
  5. import org.apache.axis2.AxisFault;  
  6. import org.apache.axis2.addressing.EndpointReference;  
  7. import org.apache.axis2.client.Options;  
  8. import org.apache.axis2.rpc.client.RPCServiceClient;  
  9.   
  10. public class TestAxis2 {  
  11.   
  12.     /** 
  13.      * @param args 
  14.      */  
  15.     public static void main(String[] args) throws Exception  {  
  16.         // TODO Auto-generated method stub  
  17.         new TestAxis2().test();  
  18.     }  
  19.       
  20.     public void test() throws Exception {  
  21.         // 服务器端WebService的WSDL连接串  
  22.         String serviceUrl = "http://172.16.225.170:8080/axis2/services/MyWebService?wsdl" ;  
  23.         RPCServiceClient serviceClient = null;  
  24.         String resultString = "";  
  25.         serviceClient = getServiceClient(serviceUrl);  
  26.         // 服务器端开放的方法名  
  27.         String wsFunction = "helloWebService";  
  28.         System.out.println(wsFunction);  
  29.         // 要传给服务器开放方法的参数.  
  30.         String jsonString = "你好" ;  
  31.         resultString = login(serviceUrl,serviceClient, jsonString, wsFunction);  
  32.         System.out.println("resultString=" + resultString);  
  33.     }  
  34.       
  35.     public RPCServiceClient getServiceClient(String wsdlUrl) {  
  36.         RPCServiceClient serviceClient = null;  
  37.         try {  
  38.             serviceClient = new RPCServiceClient();  
  39.             Options options = serviceClient.getOptions();  
  40.             EndpointReference targetEPR = new EndpointReference(wsdlUrl);  
  41.             options.setTo(targetEPR);  
  42.         } catch (AxisFault e) {  
  43.             e.printStackTrace();  
  44.         }  
  45.         return serviceClient;  
  46.     }  
  47.   
  48.     public String login(String serviceUrl,RPCServiceClient serviceClient, String jsonString, String wsFunction) throws AxisFault {  
  49.         // 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值  
  50.         QName opLogin = new QName("http://ws.apache.org/axis2", wsFunction);  
  51.         // 参数,如果有多个,继续往后面增加即可,不用指定参数的名称  
  52.         Object[] inputArgs = new Object[] {  };  
  53.         if(jsonString!=null&&!"".equals(jsonString)){  
  54.             inputArgs = new Object[] { jsonString };  
  55.         }  
  56.         /* 
  57.         返回参数类型,这个和axis1有点区别 
  58.         invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名; 
  59.          第二个参数表示要调用的WebService方法的参数值,参数类型为Object[]; 
  60.          第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。 
  61.          当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{} 
  62.          如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法, 
  63.          该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同 
  64.         */  
  65.         Class[] returnTypes = new Class[] { String.class };  
  66.         Object[] response = serviceClient.invokeBlocking(opLogin, inputArgs, returnTypes);  
  67.         String result = (String) response[0];  
  68.         // display results  
  69.         if (result == null) {  
  70.             System.out.println("result is null!");  
  71.         } else {  
  72.             System.out.println(wsFunction+"               : " + result);  
  73.         }  
  74.         return result;  
  75.     }  
  76.   


*************************************************************

package briup;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class WsClient {

   private RPCServiceClient serviceClient;
   private Options options;
   private EndpointReference targetEPR;
  
   public WsClient(String endpoint) throws AxisFault {
    serviceClient = new RPCServiceClient();
    options = serviceClient.getOptions();
    targetEPR = new EndpointReference(endpoint);
    options.setTo(targetEPR);
  }
   public Object[] invokeOp(String targetNamespace, String opName,
      Object[] opArgs, Class<?>[] opReturnType) throws AxisFault,
      ClassNotFoundException {
     // 设定操作的名称
    QName opQName = new QName(targetNamespace, opName);
     // 设定返回值
    
     //Class<?>[] opReturn = new Class[] { opReturnType };

     // 操作需要传入的参数已经在参数中给定,这里直接传入方法中调用
     return serviceClient.invokeBlocking(opQName, opArgs, opReturnType);
  }
   /**
    * @param args
    * @throws AxisFault
    * @throws ClassNotFoundException
    */

   public static void main(String[] args) throws AxisFault, ClassNotFoundException {
     // TODO Auto-generated method stub
     final String endPointReference = "http://localhost:8080/axis2/services/ws";
    final String targetNamespace = "http://briup";
    WsClient client = new WsClient(endPointReference);
    
    String opName = "sayHello";
    Object[] opArgs = new Object[]{"Repace中心"};
    Class<?>[] opReturnType = new Class[]{String[].class};
    
    Object[] response = client.invokeOp(targetNamespace, opName, opArgs, opReturnType);
    System.out.println(((String[])response[0])[0]);
  }

}

***********************************************************

/**
 * @Description Axis2客户端
 * @author 无处不在 QQ:381969898
 * @DateTime 上午10:14:42
 */
public class Axis2Client {
    
    public String execute() throws Exception  {
        
        //  使用RPC方式调用WebService        
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        //  指定调用WebService的URL
        EndpointReference targetEPR = new EndpointReference(
                "http://ip:<port>/axis2/services/XXX");
        options.setTo(targetEPR);
        //  指定method方法的参数值
        String parmInfo1 = "value1" ;
        int parmInfo2 = 12 ;
        Object[] opAddEntryArgs = new Object[] {parmInfo1,parmInfo2};
        //  指定method方法返回值的数据类型的Class对象
        Class[] classes = new Class[] {String.class};
        //  指定要调用的method方法及WSDL文件的命名空间
        QName opAddEntry = new QName("http://ws.apache.org/axis2", "method");
        //  调用method方法并输出该方法的返回值
        System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
        //  下面是调用method2方法的代码,这些代码与调用method方法的代码类似
        classes = new Class[] {int.class};
        opAddEntry = new QName("http://ws.apache.org/axis2", "method2");
        System.out.println(serviceClient.invokeBlocking(opAddEntry, new Object[]{}, classes)[0]);
        return null;
    } 
}



你可能感兴趣的:(Aix2客户端代码)