android 与后台交互的两种方式xml和json
2016-06-22 19:38
501 查看
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);
}
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);
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories