安卓使用ksoap2请求C#WebService

有很多同学在安卓开发中后端服务接口是用C#WebService编写的,那么用我们以前的Http来请求就不行了,在开发中找到了网上使用ksoap2来访问C#WebService,至于原理我也不是很清楚
既然是开发,我们能够使用就行,下面是我通过借鉴网上别的大神的例子,进行改写封装成了工具类,复制后可直接使用,下面我给大家说明一下,以便大家使用。
 
public class SoapUtil {
    //单例模式创建对象
    private static SoapUtil instance;

    public static SoapUtil getInstance(){
        if(null == instance){
            instance = new SoapUtil();
        }
        return instance;
    }
    /**
     *
     * @author 
     * @time 2016/9/5 16:07
     * @param handler 主线程通信的handler maps 需要的参数Man集合
     * @return
     */
    public void   getSoapResultByparams(final Handler handler,String methodName,Map<String,String> maps){
        final  String SERVICE_NS = "http://tempuri.org/";//命名空间
        final  String SOAP_ACTION = "http://tempuri.org/"+methodName;//用来定义消息请求的地址,也就是消息发送到哪个操作
        //创建HttpTransportSE传输对象,该对象用于调用Web Service操作
        final HttpTransportSE ht = new HttpTransportSE(znApp.SERVER_URL);
        ht.debug = true;
        final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
        //便利并对相应的参数赋值
        if (maps!=null){
            for(String key:maps.keySet()){
                soapObject.addProperty(key,maps.get(key));
            }
        }

        envelope.dotNet = true;
        envelope.bodyOut = soapObject;
        new Thread(){
            @Override
            public void run() {
                try {
                    ht.call(SOAP_ACTION, envelope);
                    if(envelope.getResponse() != null){
                        SoapObject so = (SoapObject) envelope.bodyIn;
                        Message msg = new Message();
                        msg.obj=so.getProperty(0).toString();
                        Log.i("message",msg.obj.toString());
                        handler.sendMessage(msg);
                    }
                    else{
                        Message msg=new Message();
                        msg.obj=null;
                        handler.sendMessage(msg);
                    }
                } catch (IOException e) {
                    Message message=new Message();
                    message.arg1=1;
                    handler.sendMessage(message);
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值