Android soap请求和解析

1,soap请求

try
                {
                    LogUtil.d(TAG, "url:"+SDKConfig.BaseUrl+",nameSpace:"+nameSpace+",methodName:"+methodName+",params:"+params.toString());
                    // 第一:实例化SoapObject
                    // 对象,指定webService的命名空间(从相关WSDL文档中可以查看命名空间),以及调用方法名称
                    SoapObject rpc = new SoapObject(nameSpace, methodName);
                    // 第二步:假设方法有参数的话,设置调用方法参数

                    for(String key:params.keySet()){
                        rpc.addProperty(key, params.get(key));
                    }
                    // 第三步:设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webService中版本号一致)
                    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
                    // 第四步:注册Envelope
                    envelope.enc="http://schemas.xmlsoap.org/soap/encoding/";
                    envelope.env="http://schemas.xmlsoap.org/soap/envelope/";
                    envelope.xsi="http://www.w3.org/2001/XMLSchema-instance";
                    envelope.xsd="http://www.w3.org/2001/XMLSchema";
                    envelope.bodyOut = rpc;
                    envelope.dotNet = false;//注意跟服务器对应,如果服务器用.net开发,就为true
//                  envelope.setOutputSoapObject(rpc);
                    new MarshalBase64().register(envelope);
                    // 第五步:构建传输对象,并指明WSDL文档URL
                    HttpTransportSE ht = new HttpTransportSE(SDKConfig.BaseUrl);
                    ht.debug = true;
                    // 第六步:调用WebService(其中参数为1:nameSpace+方法名称,2:Envelope对象)
                    ht.call(nameSpace+methodName, envelope);
//                   SoapPrimitive detal = (SoapPrimitive) envelope.getResponse();
                    // SoapObject detal = (SoapObject) envelope.bodyIn;
                    SoapObject detal = (SoapObject) envelope.bodyIn;
                    res.onSuccess(detal);
                    // 第七步:解析返回数据
                } catch (Exception e)
                {
                    res.onError(e);
                    e.printStackTrace();
                }

2.soap解析
2.1如果是用上面方法从网络上请求的soap xml,由于SoapObject已经解析好,我们只用取值就行了,如:

String result = object.getPropertySafelyAsString("Result");

2.2如果是直接解析soap xml,

Document document = DocumentHelper.parseText(paramString);
            DefaultXPath xpath = new DefaultXPath("//ns2:"+RESPONSE_NAME);
            xpath.setNamespaceURIs(Collections.singletonMap("ns2",
                    NAME_SPACE));
            List list = xpath.selectNodes(document);
            Iterator iterator = list.iterator();
            while (iterator.hasNext()) {
                Element rootElement = (Element) iterator.next();// 获取根节点对象

                sumAdBackResult.setVersion(getString(rootElement.element("Version")));

3,用到的jar包,2.2的解析需要用dom4j,1和2.1请求和解析需要jaxen,ksoap2-android-assembly-2.5.8-jar-with-dependencies这两个包,自己搜索下载吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值