android 与后台交互的两种方式xml和json

来源:互联网 发布:热血战歌龙心升级数据 编辑:程序博客网 时间:2024/05/18 02:24


Android 中客户端与后台的交互都比较简单,一个是xml一个是json数据。

Xml的交互之后会写,因为本人不太喜欢这个方式。

说一下json数据的交互方式

Json交互方式准照的是一个原始,遇见大括号就创建类,遇见中括号就建集合。

 HTTP 200 OK
Content-Type: application/json
Vary: Accept
Allow: GET, POST, HEAD, OPTIONS


{
    "count": 81,
    "next": "http:/=6",
    "previous": "http://127.0",
    "results": [
        {
            "id": "21039460",
            "uer": "8598",
            "type": "592263",
            "fle_size":42733,
            "fie_path": "oqi8gultn1mq9ofl.rmvb",
            "imge": "o_1ae6dj5l318fe17su1gb4tm587hg.jpg",
            "im_ice": 0,
            "play_time": "1969Z",
            "duation": 256,
            "esc": "易接受。",
            "tile": "作版)",
            "pay_num": 859,
            "shar: "",
            "ad_type": 1,
            "sle": 0,
            "vad_m_num": 0,
            "le_um": 4,
            "cree_time": "2016-00Z",
            "plul": "http:/kuffAtMt4=",
            "tehers": "",
            "permission": 0
        },
        {
            "id": "357371",
            "user": "85858998",
            "type": "261105",
            "file_size": 157220937,

以这个为例,起始就很简单了,因为片段是公司服务器的我把许多东西去掉了,为了少麻烦减

建一个类(user)里面的字段3个

又有一个集合results

List<results> list= new Arraylist<results>();

然后是两种选择一种是restults的内部类,一个是外部类,当然这个外不类的名字就可以随便了,不过还是建议用这个results。

 

我们一般是用gson解析json

Gson gson =new Gson()

 User user = gson.fromJson(response.toString(), User.class);

然后我们通过get方法获得相应的字段

 

 

另外一种是xml数据的交互方式

<?xml version="1.0" encoding="UTF-8"?>    

<beauties>    

    <beauty>    

        <name>小智</name>    

        <age>28</age>    

    </beauty>    

    <beauty>    

        <name>小漠</name>    

        <age>23</age>    

    </beauty>    

</beauties>   

以这个片段为例

注意两个地方一个是document作用的标签beauties一个就是正常的标签name 或者age

 

public class Beauty {  

      

    //解说姓名  

    private String name;  

    //解说年龄  

    private String age;  

  

    public String getName() {  

        return name;  

    }  

  

    public void setName(String name) {  

        this.name = name;  

    }  

  

    public String getAge() {  

        return age;  

    }  

  

    public void setAge(String age) {  

        this.age = age;  

    }  

  

    @Override  

    public String toString() {  

        return "解说资料 [年龄=" + age + ", 姓名=" + name + "]";  

    }  

}  

 

 

 

 

  XmlPullParser xpp = Xml.newPullParser();  

        // 设置输入流 并指明编码方式  

        xpp.setInput(is,"UTF-8");  

        // 产生第一个事件  

        int eventType = xpp.getEventType();  

          

        while (eventType != XmlPullParser.END_DOCUMENT){  

             switch (eventType) {  

                         // 判断当前事件是否为文档开始事件  

                         case XmlPullParser.START_DOCUMENT:  

                             mList = new ArrayList<Beauty>(); // 初始化books集合  

                             break;  

                         // 判断当前事件是否为标签元素开始事件  

                         case XmlPullParser.START_TAG:  

                             if (xpp.getName().equals("beauty")) { // 判断开始标签元素是否是book  

                                 beauty = new Beauty();  

                             } else if (xpp.getName().equals("name")) {  

                                 eventType = xpp.next();//让解析器指向name属性的值  

                                 // 得到name标签的属性值,并设置beauty的name  

                                 beauty.setName(xpp.getText());  

                             } else if (xpp.getName().equals("age")) { // 判断开始标签元素是否是book  

                                 eventType = xpp.next();//让解析器指向age属性的值  

                                 // 得到age标签的属性值,并设置beauty的age  

                                 beauty.setAge(xpp.getText());  

                             }   

                             break;  

                

                         // 判断当前事件是否为标签元素结束事件  

                         case XmlPullParser.END_TAG:  

                             if (xpp.getName().equals("beauty")) { // 判断结束标签元素是否是book  

                                 mList.add(beauty); // 将book添加到books集合  

                                 beauty = null;  

                             }  

                             break;  

                         }  

                         // 进入下一个元素并触发相应事件  

                         eventType = xpp.next();  

                     }  

                     return mList;  

 

 

 

这个是使用

  //通过assertmanager的open方法获取到beauties.xml文件的输入流  

            InputStream is = this.getAssets().open("beauties.xml");  

            //初始化自定义的实现类BeautyParserImpl  

            BeautyParserImpl pbp = new BeautyParserImpl();  

            //调用pbp的parse()方法,将输入流传进去解析,返回的链表结果赋给beautyList  

            beautyList = pbp.parse(is);  

 

 

/**

     * 显示到手机上

     */  

    private void setupViews(){  

        String result = "";  

          

        for (Beauty b : beautyList) {    

            result += b.toString();    

        }    

  

        TextView textView = (TextView) findViewById(R.id.textView);    

        textView.setText(result);   

    }  

 

 

 

 

0 0
原创粉丝点击