解决方案 »

  1.   

    我的代码:    public static List<String> getCityList()
        {
            List<String> list = new ArrayList<String>();
            
            //设置请求头信息
            Element[] header = new Element[1];
            header[0] = new Element().createElement(serviceNameSpace, "Header");
            
            Element sourceDeviceCode = new Element().createElement(serviceNameSpace, "sourceDeviceCode");
            sourceDeviceCode.addChild(Node.TEXT, "pbs");
            header[0].addChild(Node.ELEMENT, sourceDeviceCode);
            
            Element timeStamp = new Element().createElement(serviceNameSpace, "timeStamp");
            timeStamp.addChild(Node.TEXT, "30001010101010");
            header[0].addChild(Node.ELEMENT, timeStamp);
            
            Element authenticatorSource = new Element().createElement(serviceNameSpace, "authenticatorSource");
            authenticatorSource.addChild(Node.TEXT, "3c44f8a37088f61513930dac687576649a7b38bb4ca20317ea999ba20efc1d29");
            header[0].addChild(Node.ELEMENT, authenticatorSource);
            
            Element version = new Element().createElement(serviceNameSpace, "version");
            version.addChild(Node.TEXT, "1.0");
            header[0].addChild(Node.ELEMENT, version);
            
            //实例化SoapObject对象
            SoapObject request = new SoapObject(serviceNameSpace, syncLaunchInfo);
            
            //如果方法需要参数,设置参数
            //        request.addProperty("imei", "5641512");
            //        request.addProperty("launchTime", "20140425154500");
            //        request.addProperty("imgSize", "1");
            
            //获得序列化的Envelope,设置Soap的请求信息,参数部分为Soap协议的版本号,与要调用的webService中版本号一致
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.headerOut = header;
            envelope.bodyOut = request;
            envelope.dotNet = false;
           // (new MarshalBase64()).register(envelope);
            
            //构建Android传输对象,并指明WSDL文档URL
            HttpTransportSE transport = new HttpTransportSE(serviceURL, timeout);
            transport.debug = true;
            
            //调用
            try
            {
                //访问WebService,第一个参数为命名空间 + 方法名,第二个参数为Envelope对象
                transport.call(serviceNameSpace + syncLaunchInfo, envelope);
                
                String s = envelope.bodyIn.toString();
                Log.e("s", s);
                
                //解析返回的数据
                SoapObject result = (SoapObject)envelope.getResponse();
                
                //            if (null != result)
                //            {
                //                int count = result.getPropertyCount();
                //                for (int i = 0; i < count; i++)
                //                {
                //                    list.add(result.getProperty(i).toString());
                //                }
                //            }
            }
            catch (IOException e)
            {
                Log.getStackTraceString(e);
                Log.e("IOException", e.toString());
            }
            catch (XmlPullParserException e)
            {
                Log.getStackTraceString(e);
                Log.e("XmlPullParserException", e.toString());
            }
            Log.e("ddddd", list.toString());
            return list;
        }