android端实现WebService数据传输

在工作中需要实现android客户端想服务端通过webservice协议传输数据,用到了ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar 这个JAR包,把客户端实现的过程做一下记录,方便以后查阅。
1、客户端传递基本数据类型的参数到服务端

    /**
     * 
     * @Title: query 
     * @Description:      联动信息查询
     * @param param       参数
     * @param methodName  方法名称
     * @return
     * @throws
     */
    public static String query(Map<String,String> param,String methodName){
        String serviceNS = UrlContainer.SERVICE_NS;
        //String serviceUrl = UrlContainer.SERVICE_URL;
        String serviceUrl = UrlContainer.getUrl();
        HttpTransportSE ht = new HttpTransportSE(serviceUrl, 25000);
        ht.debug = true;        
        // 使用SOAP1.1协议创建Envelop对象
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        // 实例化SoapObject对象
        SoapObject soapObject = new SoapObject(serviceNS, methodName);
        // 传递参数
        if(param != null){
            Iterator<String> itor = param.keySet().iterator();
            while(itor.hasNext()){
                String key = itor.next();
                soapObject.addProperty(key,param.get(key));
            }
        }       
        envelope.bodyOut = soapObject;
        // 设置与.Net提供的Web Service保持较好的兼容性
        envelope.dotNet = false;
        try {
            System.setProperty("http.keepAlive", "false");
            // 调用Web Service
            ht.call(null, envelope);
            if (envelope.getResponse() != null) {
                // 获取服务器响应返回的SOAP消息
                SoapObject result = (SoapObject) envelope.bodyIn;
                String details = result.getProperty(0).toString();
                Log.d(TAG, "query details = " + details);
                // 解析服务器响应的SOAP消息。
                return details;
            }else{
                Log.d(TAG, "query nvelope.getResponse() == null ");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }
        return null;
    }

2、传递的参数是自定义的对象类型

    public static String saveAddress(AddressesBean addrBean){
        // 创建HttpTransportSE传输对象 ,设置超时时间为15s
        HttpTransportSE ht = new HttpTransportSE(UrlContainer.getUrl(), 25000);
        ht.debug = true;
        // 使用SOAP1.1协议创建Envelop对象
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        // 实例化SoapObject对象
        SoapObject soapObject = new SoapObject(UrlContainer.SERVICE_NS, UrlContainer.METHOD_SAVE_ADDR);
        PropertyInfo objekt = new PropertyInfo();
        objekt.setName("addresses");
        objekt.setValue(addrBean);
        objekt.setType(addrBean.getClass());
        soapObject.addProperty(objekt);
        envelope.bodyOut = soapObject;
        // 设置与.Net提供的Web Service保持较好的兼容性
        envelope.dotNet = false;
        try {
            System.setProperty("http.keepAlive", "false");
            // 调用Web Service
            ht.call(null, envelope);
            if (envelope.getResponse() != null) {
                // 获取服务器响应返回的SOAP消息
                SoapObject result = (SoapObject) envelope.bodyIn;
                String detail = result.getProperty(0).toString();
                // 解析服务器响应的SOAP消息。
                Log.d(TAG, "saveAddress detail = " + detail);
                return detail;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }
        return null;
    }

3、自定义参数

import java.util.Hashtable;

import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;

public class AddressesBean implements KvmSerializable {

    private  String XZQH;//行政区划
    private  String XZQHMC;//行政区划名称
    private  String PCS;//派出所
    private  String PCSMC;//派出所名称
    private  String JWH;//居(村)委会(部
    private  String JWHMC;//居(村)委会名称
    private  String JLX;// 街路巷
    private  String JLXMC;//街路巷名称
    private  String MLPH;//门(楼)牌号
    private  String MLXZ;//门(楼)详址

    @Override
    public Object getProperty(int arg0) {
        switch (arg0) {
        case 0:
            return XZQH;//行政区划
        case 1:
            return XZQHMC;//行政区划名称
        case 2:
            return PCS;//派出所
        case 3:
            return PCSMC;//派出所名称
        case 4:
            return JWH;//居(村)委会(部
        case 5:
            return JWHMC;//居(村)委会名称
        case 6:
            return JLX;// 街路巷
        case 7:
            return JLXMC;//街路巷名称
        case 8:
            return MLPH;//门(楼)牌号
        case 9:
            return MLXZ;//门(楼)详址
        default:
            break;
        }
        return null;
    }

    @Override
    public int getPropertyCount() {
        return 10;
    }

    @Override
    public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
        switch (arg0) {
        case 0:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "XZQH"; //行政区划
            break;
        case 1:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "XZQHMC"; //行政区划名称
            break;
        case 2:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "PCS"; // 派出所
            break;
        case 3:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "PCSMC"; // 派出所名称
            break;      
        case 4:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "JWH"; // 居(村)委会(部
            break;  
        case 5:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "JWHMC"; //居(村)委会名称
            break;
        case 6:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "JLX"; // 街路巷
            break;          
        case 7:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "JLXMC";//街路巷名称
            break;
        case 8:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "MLPH";//门(楼)牌号
            break;
        case 9:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "MLXZ";//门(楼)详址
            break;
        default:
            break;
        }
    }

    @Override
    public void setProperty(int arg0, Object arg1) {
        switch (arg0) {
        case 0:
            XZQH = arg1.toString();
            break;
        case 1:
            XZQHMC = arg1.toString();
            break;
        case 2:
            PCS = arg1.toString();
            break;
        case 3:
            PCSMC = arg1.toString();
            break;      
        case 4:
            JWH = arg1.toString();
            break;  
        case 5:
            JWHMC = arg1.toString();
            break;
        case 6:
            JLX = arg1.toString();
            break;          
        case 7:
            JLXMC = arg1.toString();
            break;
        case 8:
            MLPH = arg1.toString();
            break;
        case 9:
            MLXZ = arg1.toString();
            break;
        default:
            break;
        }
    }

    /**
     * @return xZQH
     */
    public String getXZQH() {
        return XZQH;
    }

    /**
     * @param xZQH 
     */
    public void setXZQH(String xZQH) {
        XZQH = xZQH;
    }

    /**
     * @return xZQHMC
     */
    public String getXZQHMC() {
        return XZQHMC;
    }

    /**
     * @param xZQHMC 
     */
    public void setXZQHMC(String xZQHMC) {
        XZQHMC = xZQHMC;
    }

    /**
     * @return pCS
     */
    public String getPCS() {
        return PCS;
    }

    /**
     * @param pCS 
     */
    public void setPCS(String pCS) {
        PCS = pCS;
    }

    /**
     * @return pCSMC
     */
    public String getPCSMC() {
        return PCSMC;
    }

    /**
     * @param pCSMC 
     */
    public void setPCSMC(String pCSMC) {
        PCSMC = pCSMC;
    }

    /**
     * @return jWH
     */
    public String getJWH() {
        return JWH;
    }

    /**
     * @param jWH 
     */
    public void setJWH(String jWH) {
        JWH = jWH;
    }

    /**
     * @return jWHMC
     */
    public String getJWHMC() {
        return JWHMC;
    }

    /**
     * @param jWHMC 
     */
    public void setJWHMC(String jWHMC) {
        JWHMC = jWHMC;
    }

    /**
     * @return jLX
     */
    public String getJLX() {
        return JLX;
    }

    /**
     * @param jLX 
     */
    public void setJLX(String jLX) {
        JLX = jLX;
    }

    /**
     * @return jLXMC
     */
    public String getJLXMC() {
        return JLXMC;
    }

    /**
     * @param jLXMC 
     */
    public void setJLXMC(String jLXMC) {
        JLXMC = jLXMC;
    }

    /**
     * @return mLPH
     */
    public String getMLPH() {
        return MLPH;
    }

    /**
     * @param mLPH 
     */
    public void setMLPH(String mLPH) {
        MLPH = mLPH;
    }

    /**
     * @return mLXZ
     */
    public String getMLXZ() {
        return MLXZ;
    }

    /**
     * @param mLXZ 
     */
    public void setMLXZ(String mLXZ) {
        MLXZ = mLXZ;
    }

    /**
     * @Title: toString 
     * @Description: TODO 
     * @return 
     * @see java.lang.Object#toString() 
     */
    @Override
    public String toString() {
        return "AddressesBean [XZQH=" + XZQH + ", XZQHMC=" + XZQHMC + ", PCS=" + PCS + ", PCSMC=" + PCSMC + ", JWH="
                + JWH + ", JWHMC=" + JWHMC + ", JLX=" + JLX + ", JLXMC=" + JLXMC + ", MLPH=" + MLPH + ", MLXZ=" + MLXZ
                + "]";
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值