通过ksoap2访问.NET Webservice 的数据库

来源:互联网 发布:维生素vb对皮肤的作用 编辑:程序博客网 时间:2024/04/30 14:03
通过2天的摸索,从一开始用序列化-反序列化方式开始就没成功过,似乎是因为语言不同导致序列化不成功。后来就用RPC方式,可以获取单独对象,但是数组集合的获取没想到合理方式。最后只是简单的修改了下代码,通过Ksoap 的 soapobject 对象获取了集合

下面是服务端代码(webservice)

 /// <summary>    /// Service1 的摘要说明    /// </summary>    [WebService(Namespace = "http://tempuri.org/")]   [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]   [ToolboxItem(false)]  // [SoapRpcService]//指定使用rpc方式    public class Service1 : System.Web.Services.WebService   {       //  [SoapRpcMethod, WebMethod]//具体方法中也要指定rpc方式       [WebMethod]       public string HelloWorld()       {           return "Hello World";       }      // [SoapRpcMethod, WebMethod]//具体方法中也要指定rpc方式        [WebMethod]       public Person GetPerson()       {           Person p = new Person(1,"xzd",34);           return p;       }        // [SoapRpcMethod, WebMethod]//具体方法中也要指定rpc方式        [WebMethod]       public Person SetPerson(string name,int age)       {           Person p = new Person(1, name, age);           return p;       }         [WebMethod]   //[SoapRpcMethod, WebMethod] 具体方法中也要指定rpc方式        public List<Person> GetPersonlist()       {           return PersonManager.GetPersonlist();       }   }  


下面是客户端代码

 TextView tvResult ;        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                SoapObject request = new SoapObject("http://tempuri.org/", "GetPersonlist");                  SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);                 envelope.dotNet = true;        envelope.setOutputSoapObject(request);        AndroidHttpTransport  ht = new AndroidHttpTransport("http://192.168.1.101/Service/Service1.asmx");                (new MarshalBase64()).register(envelope);//放着没错                 tvResult = (TextView)findViewById(R.string.hello);         try {                  ht.call("http://tempuri.org/GetPersonlist",envelope);                SoapObject soapObject = (SoapObject) envelope.getResponse();           String names="";          if(soapObject.getName()=="anyType")          {          for(int i=0;i<soapObject.getPropertyCount();i++)          {                            SoapObject soapChilds =(SoapObject)soapObject.getProperty(i);                            names+= soapChilds.getProperty("Name").toString()+","+              soapChilds.getProperty("Id").toString()+","+              soapChilds.getProperty("Age").toString();                        }          }          tvResult.setText(names);            } catch (Exception e) {      // TODO Auto-generated catch block             tvResult.setText(e.getMessage().toString());  }    }  

转载自:http://blog.csdn.net/xzd171/article/details/6236257


原创粉丝点击