axis2 webservice 调用的三种方式

来源:互联网 发布:藏族怎么看中国知乎 编辑:程序博客网 时间:2024/04/28 03:06
[java] view plain copy print?
  1. package testClick.src.test;  
  2.   
  3. import javax.xml.namespace.QName;  
  4.   
  5. import org.apache.axiom.om.OMAbstractFactory;  
  6. import org.apache.axiom.om.OMElement;  
  7. import org.apache.axiom.om.OMFactory;  
  8. import org.apache.axiom.om.OMNamespace;  
  9. import org.apache.axis2.AxisFault;  
  10. import org.apache.axis2.addressing.EndpointReference;  
  11. import org.apache.axis2.client.Options;  
  12. import org.apache.axis2.client.ServiceClient;  
  13. import org.apache.axis2.rpc.client.RPCServiceClient;  
  14. import org.junit.Test;  
  15.   
  16. import testClick.src.testclick.HelloWebService;  
  17. import testClick.src.testclick.HelloWebServicePortType;  
  18.   
  19. public class TestWebservice {  
  20.   
  21.     @Test  
  22.     public void Test(){  
  23.         //testClient();  
  24.         //testRPC();  
  25.         testOMElement();  
  26.     }  
  27.       
  28.     /** 
  29.      * 第一种 
  30.      * MyEclipse 生成客户端方式 
  31.      */  
  32.     public void testClient(){  
  33.         HelloWebService service = new HelloWebService();  
  34.         HelloWebServicePortType portType = service.getHelloWebServiceHttpSoap11Endpoint();  
  35.         String result = portType.sayHello("jack");  
  36.         System.out.println(result);  
  37.     }  
  38.       
  39.     /** 
  40.      *  第二种 
  41.      *  使用axis2 RPC调用webservice 需要导入相应的jar包 
  42.      */  
  43.     public void testRPC(){  
  44.         try{  
  45.             RPCServiceClient client = new RPCServiceClient();  
  46.             Options options = client.getOptions();  
  47.             String url = "http://localhost:8080/axis2/services/HelloWebService?wsdl";  
  48.             EndpointReference end = new EndpointReference(url);  
  49.             options.setTo(end);  
  50.               
  51.             Object[] obj = new Object[]{"tom"};  
  52.              Class<?>[] classes = new Class[] { String.class };    
  53.               
  54.             QName qname = new QName("http://testClick""sayHello");    
  55.             String result = (String) client.invokeBlocking(qname, obj,classes)[0];  
  56.             System.out.println(result);  
  57.         }catch(AxisFault e){  
  58.             e.printStackTrace();  
  59.         }  
  60.     }  
  61.       
  62.     /** 
  63.      *  第三种 
  64.      * @throws AxisFault  
  65.      */  
  66.     public void testOMElement(){  
  67.         try{  
  68.             ServiceClient sc = new ServiceClient();  
  69.             Options opts = new Options();   
  70.             String url = "http://localhost:8080/axis2/services/HelloWebService?wsdl";  
  71.             EndpointReference end = new EndpointReference(url);  
  72.             opts.setTo(end);  
  73.             opts.setAction("sayHello");  
  74.             sc.setOptions(opts);  
  75.               
  76.             OMFactory fac = OMAbstractFactory.getOMFactory();    
  77.             OMNamespace omNs = fac.createOMNamespace("http://testClick""");    
  78.             OMElement method = fac.createOMElement("sayHello",omNs);    
  79.             OMElement value = fac.createOMElement("name",omNs);  
  80.             value.setText("admin");  
  81.             method.addChild(value);   
  82.             OMElement res = sc.sendReceive(method);  
  83.             res.getFirstElement().getText();    
  84.             System.out.println(res.getFirstElement().getText());  
  85.         }catch(AxisFault e){  
  86.             e.printStackTrace();  
  87.         }  
  88.     }  
  89. }  

 

 

 

0 0