KSoap2 Android 是 Android 平台上一个高效、轻量级的 SOAP 开发包。等同于 Android 上的 KSoap2 的移植版本。所以可以独立出客户端进行开发测试工作。

两个组件

1 KSOAP2 客户端(Android2适用)

  SOAP2下载地址:  http://code.google.com/p/ksoap2-android/downloads/list?can=1&q=&colspec=Filename+Summary+Uploaded+Size+DownloadCount

2 Cxf2.6 java服务端

   Cxf2.6下载地址:   http://www.apache.org/dyn/closer.cgi?path=/cxf/2.6.6/apache-cxf-2.6.6.zip 

主要描述是 如何使用KSOAP调用cxf发布的web服务

    java服务端

   暴露服务接口

  1. @WebService(targetNamespace="http://www.cnc.com",name="UserService")  
  2. public interface UserService {  
  3.     /* @WebResult(name = "return", targetNamespace = "http://www.cnc.com")  
  4.      @Action(input = "urn:sayHello", output = "sayHelloResponse")  
  5.      @RequestWrapper(localName = "sayHello", targetNamespace = "http://www.cnc.com")  
  6.      @WebMethod(action = "urn:sayHello")  
  7.      @ResponseWrapper(localName = "sayHelloResponse", targetNamespace = "http://www.cnc.com")*/ 
  8.     public String sayHello( @WebParam(name = "args0", targetNamespace = "http://www.cnc.com")  
  9.         java.lang.String args0  
  10.     );  

 

服务接口实现类 

  1. @WebService(endpointInterface="com.cncsoft.provide.service.UserService",targetNamespace="http://www.cnc.com")  
  2. public class UserServiceBean implements UserService{  
  3.  
  4.      public String sayHello(String args0) {  
  5.            
  6.         return "This is sayHello First " + args0;  
  7.     }  

 

CXF服务发布类 

  1. public class PubWebService {  
  2.  
  3.        
  4.     protected PubWebService() throws Exception{  
  5.             UserServiceBean helloWorld = new UserServiceBean();  
  6.             String address = "http://192.168.1.71:9000/cxf";  
  7.            
  8.             //Endpoint.publish(address, helloWorld);  
  9.             //发布服务  
  10.             JaxWsServerFactoryBean server = new JaxWsServerFactoryBean();  
  11.             server.setServiceClass(helloWorld.getClass());  
  12.             server.setAddress(address);  
  13.             server.create();  
  14.         }  
  15.           
  16.         public static void main(String[] args) throws Exception{  
  17.             new PubWebService();  
  18.         }  
  19.  
  20. }  

 

 KSOAP2 客户端调用

  1. public class KsoapClient {  
  2.  
  3.    
  4.     public static void main(String[] args) throws IOException, XmlPullParserException {  
  5.         SoapObject request = new SoapObject("http://www.cnc.com""sayHello");   
  6.         request.addProperty("args0","z");    
  7.            
  8.         //生成调用WebService方法的SOAP请求信息  
  9.         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);    
  10.         envelope.bodyOut = request;  
  11.         //创建HttpTransportSE对象,指定WebService的WSDL文档的URL  
  12.         HttpTransportSE ht = new HttpTransportSE("http://192.168.1.71:9000/cxf?wsdl");  
  13.         //使用call方法调用WebService方法  
  14.         ht.call(null, envelope);  
  15.         //使用getResponse方法获得WebService方法的返回结果  
  16.         Object soapObject = envelope.getResponse();  
  17.         System.out.println(soapObject);  
  18.  
  19.     }  
  20. }  

 KsoapClient中request.addProperty("参数名",传递的值);

参数名必须与Web服务端发布的WSDL文件中的方法参数同名

ksoap2调用webservice(cxf框架)_CXF