• android与webService的数据传输数据表=json (实战二)


    对于android调用webservice,并返回一个table数据,现在我使用json作为数据传输的手段


    Json简介:推荐看这篇http://www.ruanyifeng.com/blog/2009/05/data_types_and_json.html


    Json的规则是


    1) 并列的数据之间用逗号("")分隔。


    2) 映射用冒号("")表示。


    3) 并列数据的集合(数组)用方括号("[]")表示。


    4) 映射的集合(对象)用大括号("{}")表示。



    示例:


    {


    "people":


    [  


    { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },  
    { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},  


    { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }  


    ]


    }




    现在通过实例来说明:


    我的数据表Info的定义



    android与webService的数据传输---数据表=json - 雨下晴川 - 小熊梦工厂

    代码:


    C#webservice的方法


    [WebMethod]


    public String getTable(string name)


    {


                SqlConnection conn = new SqlConnection(@"Data Source=SONGSFLY-PC\SQLEXPRESS;Initial
      
    Catalog=android;Integrated Security=True");


                conn.Open();


                SqlCommand cmd = new SqlCommand("select * from Info where name='"+name+"'",conn);


                SqlDataAdapter da=new SqlDataAdapter(cmd);


                DataSet ds=new DataSet();


                da.Fill(ds);


               



                return DataTable2Json(ds.Tables[0]);


      }




    dataTable数据构造成Json格式的字符串


    public string DataTable2Json(DataTable dt)


    {


           if (dt != null && dt.Rows.Count > 0)


           {


               StringBuilder jsonBuilder = new StringBuilder();


              jsonBuilder.Append("{");


               jsonBuilder.Append("\"ds\"");


               jsonBuilder.Append(":[");


               for (int i = 0; i < dt.Rows.Count; i++)


               {


                   jsonBuilder.Append("{");


                   for (int j = 0; j < dt.Columns.Count; j++)


                   {


                        jsonBuilder.Append("\""+dt.Columns[j].ColumnName+"\"");


                        jsonBuilder.Append(":\"");


                        jsonBuilder.Append(dt.Rows[i][j].ToString());


                        jsonBuilder.Append("\",");


                   }


                   jsonBuilder.Remove(jsonBuilder.Length - 1, 1);


                    jsonBuilder.Append("},");


                }


                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);


                jsonBuilder.Append("]");


                jsonBuilder.Append("}");


                return jsonBuilder.ToString();


            }


            else


            {


               return "{\"ds\":{}}";


            }


        }


    }





    Android端代码如下



    String namespace="http://tempuri.org/";


    String methoName="getTable";


           


    SoapObject soapObject=new SoapObject(namespace, methoName);


    SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);


    soapObject.addProperty("name","songsfly");//带参数的方法调用,若调用无参数的,则无需此句


    envelope.dotNet=true;


    envelope.setOutputSoapObject(soapObject);


    HttpTransportSE httpTranstation=new HttpTransportSE("http://192.168.172.82/Service2.asmx?wsdl");


    try {


            httpTranstation.call(namespace+methoName, envelope);


            Object result=envelope.getResponse()


            String str=(String) result.toString();//获得请求的字符串


           JSONArray jsonArray =new JSONObject(str).getJSONArray("ds");//获得json字符串里名字为ds的数组,如果ds不是最外层,请通过ds的父对象来取


    //JSONObject joJsonObject=new JSONObject(str).getJSONObject("dss").getJSONArray("ds");//dss是ds的外层


            int count=jsonArray.length();


            for(int index=0;index<count;index++){


               
    String r=jsonArray.optJSONObject(index).getString("name").toString();//获得数组里的对象,再根据对象获得字段


                    strList.add(r);


             }


               


                adapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,strList);


               provinceListView.setAdapter(adapter);


    }

  • 相关阅读:
    欢迎加入【TIB自动化测试快讯】邮件列表!
    封装几个有用的QTP函数
    自动测试随想
    WatiN自动化测试
    使用vs2010的Coded UI Test实现数据驱动的用户自动登录测试
    QTP的DataTable操作
    TestComplete自动化测试课程大纲
    快速测试自动化
    自动化测试工程师职位(内部推荐)
    QTP库函数集
  • 原文地址:https://www.cnblogs.com/robinli/p/2715883.html
Copyright © 2020-2023  润新知