android ksoap2 调用WebService和WCF服务的区别

  1. 如何区分服务是webservice服务和wcf服务
    webservice服务网址是以.asmx结尾的,例子:http://ip地址/Interface/MapService.asmx?wsdl
    wcf服务是以.svc结尾的,例子:http://ip地址/ydyzt/ReadXml.svc?wsdl
  2. 使用ksoap2调用两个服务基本相同,唯一需要注意的是:soapAction
    webservice的soapAciton = nameSpace+methodName
    而wcf的soapAction不等于nameSpace+methodName

    例子:webservice服务中
    String nameSpace = “http://tempuri.org/”;
    String methodName = “RetDatePrjinfo”;
    String soapAction = “http://tempuri.org/RetDatePrjinfo”;
    在wcf服务中
    String nameSpace = “http://tempuri.org/”;
    String methodName = “DoWork”;
    String soapAction = “http://tempuri.org” + “/IService” + “/DoWork”;
    其中IService需要去(网址?wsdl例如:http://192.88.223.169/ydyzt/ReadXml.svc?wsdl)中找

下面是使用ksoap2请求wcf服务(不含请求参数)的代码,根据实际情况修改nameSpace,methodName 和soapAction,根据实际情况添加请求参数

String nameSpace = "http://tempuri.org/";
                String methodName = "DoWork";
                String soapAction = "http://tempuri.org" + "/IService" + "/DoWork";
                String url = "http://192.88.223.169/ydyzt/ReadXml.svc?wsdl";
                SoapObject request = new SoapObject(nameSpace, methodName);
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.dotNet = true;
                envelope.setOutputSoapObject(request);
                envelope.bodyOut = request;
                try {
                    HttpTransportSE transportSE = new HttpTransportSE(url);
                    transportSE.call(soapAction, envelope);
                    SoapObject bodyIn = (SoapObject) envelope.bodyIn;
                    String property = bodyIn.getProperty(0).toString();
//                    Log.e("获取到数据", property);
                    return property;
                } catch (Exception e) {
                    e.printStackTrace();
                }

使用ksoap2请求webservice服务(含请求参数)的代码,根据实际情况修改nameSpace,methodName 和soapAction,根据实际情况添加请求参数

 String uploadUrl = "http://117.17.18.120:6061/PublicInterface/MapService.asmx?WSDL";
        String uploadNameSpace = "http://tempuri.org/";
        String uploadMethodName = "UploadProjectFileInfo ";   //
        String uploadSoapAction = "http://tempuri.org/UploadProjectFileInfo";
        SoapObject request = new SoapObject(uploadNameSpace, uploadMethodName);
        request.addProperty("strUploadUserName", "");
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        envelope.bodyOut = request;
        try {
            HttpTransportSE transportSE = new HttpTransportSE(uploadUrl);
            new MarshalBase64().register(envelope);
            transportSE.call(uploadSoapAction, envelope);
            Object response = envelope.getResponse();
            SoapObject bodyIn = (SoapObject) envelope.bodyIn;
            String property = bodyIn.getProperty(0).toString();
            return property;
        } catch (Exception e) {
            e.printStackTrace();
            return e.toString();
        }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值