posts - 66,comments - 41,trackbacks - 0
近日在项目中写了个OPhone 调用Webservice的工具类,主要是使用了KSoap2来实现的,代码如下:

 1package com.ictehi.ophone.util;   
 2  
 3import java.io.IOException;   
 4import java.util.Iterator;   
 5import java.util.Map;   
 6  
 7import org.ksoap2.SoapEnvelope;   
 8import org.ksoap2.SoapFault;   
 9import org.ksoap2.serialization.SoapObject;   
10import org.ksoap2.serialization.SoapSerializationEnvelope;   
11import org.ksoap2.transport.AndroidHttpTransport;   
12import org.ksoap2.transport.HttpTransportSE;   
13import org.xmlpull.v1.XmlPullParserException;   
14  
15import android.util.Log;   
16  
17public class WSUtils {   
18  
19    public WSUtils() {   
20    }
   
21       
22    /**  
23     * @author Eric.Lu  
24     * @param endPoint  
25     * @param methodName  
26     * @param params  
27     * @param wsdl  
28     * @return SoapObject  
29     */
  
30    public static SoapObject callWS(String nameSpace, String methodName,   
31            Map params, String wsdl) {   
32  
33        final String SOAP_ACTION=nameSpace+methodName;   
34        SoapObject request = new SoapObject(nameSpace, methodName);   
35        SoapObject soapResult=null;   
36           
37        if(params !=null && !params.isEmpty()){   
38            for(Iterator it=params.entrySet().iterator();it.hasNext();){//遍历MAP   
39                Map.Entry<String, Object> e=(Map.Entry<String, Object>) it.next();   
40                request.addProperty(e.getKey().toString(),e.getValue());   
41            }
   
42        }
   
43           
44            /**  
45             * 设置Soap版本  
46             * 类型:VER1.0,VER1.1,VER1.2  
47             */
  
48            // SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER10);//SOAP 1.0   
49            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// SOAP 1.1   
50            // SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER12);//SOAP 1.2   
51               
52            envelope.dotNet=true;//是否是dotNet WebService   
53            envelope.bodyOut = request;   
54  
55//          HttpTransportSE ht = new HttpTransportSE(wsdl);   
56            AndroidHttpTransport androidHT=new  AndroidHttpTransport(wsdl);    
57            try {   
58//              ht.call(SOAP_ACTION, envelope);   
59                androidHT.call(SOAP_ACTION,envelope);   
60            }
 catch (IOException e) {   
61                Log.e("IOException:", e.getMessage());   
62            }
 catch (XmlPullParserException e1) {   
63                Log.e("XmlPullParserException", e1.getMessage());   
64            }
   
65            try {   
66                soapResult=(SoapObject)envelope.getResponse();   
67            }
 catch (SoapFault e) {   
68                Log.e("SoapFault",e.getMessage());   
69            }
   
70        return soapResult;   
71    }
   
72}
  
73
74
75本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kylixlu/archive/2010/03/12/5372846.aspx
调用这个工具类的方法如下:
 1HashMap<String, Object> params = new HashMap<String, Object>();      
 2        params.put("theCityName", peoples[position]);      
 3        String wsdl = "webservice的wsdl地址";      
 4        String nameSpace = "wsdl中的namespace";      
 5        String methodName = "方法名";//      
 6        // SoapObject result = WSUtils.callWS(nameSpace, methodName,      
 7        // wsdl,peoples[position]);      
 8        SoapObject result = WSUtils.callWS(nameSpace, methodName, params, wsdl);    
 9
10
11本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kylixlu/archive/2010/03/12/5372846.aspx


MSN:
posted on 2010-03-24 09:23 kylixlu 阅读(800) 评论(0)  编辑  收藏 所属分类: Android

只有注册用户登录后才能发表评论。


网站导航: