Volley及FastJson的简单使用
2015-10-26 21:41
766 查看
Volley的简单使用
介绍:Volley是Google开发的一个进行联网操作的框架,一般针对于联网的内容比较小的时候使用起来会非常方便。步骤如下:
1.将Volley的jar包导入到bins目录的文件下,在android studio中一定要记得还要手动进行一下添加。
2.RequestQueue 定义一个成员变量RequestQueue对象requestQueue,一般在oncreate()方法中进行创建,RequestQueue
requestQueue=Volley.newRequestQueue(this);
3.在合适的方法中进行请求操作,比如在Button的点击事件中进行Get请求,针对不同的返回数据类型,一般有StringRequest,
JsonObjectRequest,ImageRequest三种请求方式,以StringRequest为例:StringRequest stringRequest=new StringRequest(参
数一,参数二,参数三,参数四);
参数一:请求方法,如:StringRequest.Method.GET
参数二:请求地址,url
参数三:Listener类型 ,接收网络响应的接口,即只要得到本次请求对应的返回结果就会运行此接口中的onResponse方法。
参数四:ErrorListener类型,用于接收当网络请求的过程中一旦发生了什么错误,就会调用本接口中的onErrorResponse方法。
4.设置请求Tag,以方便解除,如:stringRequest.setTag("GET");
5.将请求添加到请求对列中,执行网络任务。方法为:requestQueue.add(stringRequest)。没有该方法,将无法进行联网下载
6.Post方式相对Get方式有一些不同,主要在于:请求条件的指定必须在StringRequest对象的后面添加{},并且
在{}内重写getParams方法,该方法的返回值就是所有的请求条件,请求条件用Map类型来进行键值对的存储,返回map即可
7.JsonObjectRequest的GET请求方式和StringRequest方式基本相同,POST方式不同之处在于:首先,需要生成一个JSONObject类
型的对象,并通过put方法将请求条件通过键值对的方式存储,然后在生成JsonObjectRequest对象时,通过一个五个参数的构造方
法,第三个参数就是JSONObject类型的带有请求条件的对象,其他四个参数和StringRequest相同。
<span style="font-size:18px;">public class MainActivity extends Activity {
RequestQueue queue;
private String url = "http://mobapi.meilishuo.com/2.0/express/recommend_entrance?imei=000000000000000&mac=08%3A00%3A27%3A51%3A2e%3Aaa&qudaoid=11601&access_token=6c5428735c0a46cbd4bd0ac53fd9da30&st=1429002510&_sign=bf62212d98e50df072288c9e86077939467f9b10";
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
queue = Volley.newRequestQueue(this);
}
public void click(View v) {
switch (v.getId()) {
case R.id.stringGet: //GET请求的处理
StringRequest request = new StringRequest(StringRequest.Method.GET,
url,
new Response.Listener<String>() {
//参数代表本次网络请求的结果
@Override
public void onResponse(String s) {
tv.setText(s);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(MainActivity.this, "出错原因:" +
volleyError.getMessage(), Toast.LENGTH_SHORT)
.show();
}
});
//三,给请求对象设置tag标识
request.setTag("get");
//四,将请求添加到请求队列中,执行网络请求
queue.add(request);
break;
case R.id.stringPost: //实现post请求
StringRequest post = new StringRequest(StringRequest.Method.POST,
"http://mobapi.meilishuo.com/2.0/express/recommend_entrance",
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
tv.setText(s);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//将请求条件封装到map对象中
Map<String, String> map = new HashMap<String, String>();
map.put("imei", "000000000000000");
map.put("mac", "08%3A00%3A27%3A51%3A2e%3Aaa");
map.put("qudaoid", "11601");
map.put("access_token", "6c5428735c0a46cbd4bd0ac53fd9da30");
map.put("st", "1429002510");
map.put("_sign", "bf62212d98e50df072288c9e86077939467f9b10");
return map;
}
};
post.setTag("post");
queue.add(post);
break;
case R.id.jsonPost:
JSONObject object = new JSONObject();
try {
object.put("imei", "000000000000000");
object.put("mac", "08%3A00%3A27%3A51%3A2e%3Aaa");
object.put("qudaoid", "11601");
object.put("access_token", "6c5428735c0a46cbd4bd0ac53fd9da30");
object.put("st", "1429002510");
object.put("_sign", "bf62212d98e50df072288c9e86077939467f9b10");
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest jsonPost = new JsonObjectRequest(
JsonObjectRequest.Method.POST,
"http://mobapi.meilishuo.com/2.0/express/recommend_entrance",
object,//jsonObject类型的对象,此对象用于设置本次网络请求的请求条件
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
tv.setText(jsonObject.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}
);
jsonPost.setTag("jsonpost");
queue.add(jsonPost);
break;
}
}
}
</span>
FastJson的简单使用
FastJson是阿里巴巴公司开发的Json数据解析框架,号称解析数据最快。使用方法:
1.导jar包
2.一般在获得json数据的后进行数据的加载解析操作,一般是在JsonObjectRequest第三个参数的回调方法中调用
但是在调用之前,第一步要对解析的数据进行类型封装,属性封装一定要先看看解析的格式和类型,一般此时会有JSONJArray类
型的属性,一定再对该类型进行类的封装,直到都为单一属性即可。此时,一定要对封装的类进行一个无参的构造方法。
比如:MeLiShuo ms = com.alibaba.fastjson.JSONObject.parseObject(jsonObject.toString(),MeLiShuo.class);
美丽说数据接口类型,参数一为json数据,参数二为数据类型.class
list.addAll(ms.getData());Data为其ArrayJSON类型,有过封装之后,传入list集合,在适配器中进行加载。
介绍:Volley是Google开发的一个进行联网操作的框架,一般针对于联网的内容比较小的时候使用起来会非常方便。步骤如下:
1.将Volley的jar包导入到bins目录的文件下,在android studio中一定要记得还要手动进行一下添加。
2.RequestQueue 定义一个成员变量RequestQueue对象requestQueue,一般在oncreate()方法中进行创建,RequestQueue
requestQueue=Volley.newRequestQueue(this);
3.在合适的方法中进行请求操作,比如在Button的点击事件中进行Get请求,针对不同的返回数据类型,一般有StringRequest,
JsonObjectRequest,ImageRequest三种请求方式,以StringRequest为例:StringRequest stringRequest=new StringRequest(参
数一,参数二,参数三,参数四);
参数一:请求方法,如:StringRequest.Method.GET
参数二:请求地址,url
参数三:Listener类型 ,接收网络响应的接口,即只要得到本次请求对应的返回结果就会运行此接口中的onResponse方法。
参数四:ErrorListener类型,用于接收当网络请求的过程中一旦发生了什么错误,就会调用本接口中的onErrorResponse方法。
4.设置请求Tag,以方便解除,如:stringRequest.setTag("GET");
5.将请求添加到请求对列中,执行网络任务。方法为:requestQueue.add(stringRequest)。没有该方法,将无法进行联网下载
6.Post方式相对Get方式有一些不同,主要在于:请求条件的指定必须在StringRequest对象的后面添加{},并且
在{}内重写getParams方法,该方法的返回值就是所有的请求条件,请求条件用Map类型来进行键值对的存储,返回map即可
7.JsonObjectRequest的GET请求方式和StringRequest方式基本相同,POST方式不同之处在于:首先,需要生成一个JSONObject类
型的对象,并通过put方法将请求条件通过键值对的方式存储,然后在生成JsonObjectRequest对象时,通过一个五个参数的构造方
法,第三个参数就是JSONObject类型的带有请求条件的对象,其他四个参数和StringRequest相同。
<span style="font-size:18px;">public class MainActivity extends Activity {
RequestQueue queue;
private String url = "http://mobapi.meilishuo.com/2.0/express/recommend_entrance?imei=000000000000000&mac=08%3A00%3A27%3A51%3A2e%3Aaa&qudaoid=11601&access_token=6c5428735c0a46cbd4bd0ac53fd9da30&st=1429002510&_sign=bf62212d98e50df072288c9e86077939467f9b10";
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
queue = Volley.newRequestQueue(this);
}
public void click(View v) {
switch (v.getId()) {
case R.id.stringGet: //GET请求的处理
StringRequest request = new StringRequest(StringRequest.Method.GET,
url,
new Response.Listener<String>() {
//参数代表本次网络请求的结果
@Override
public void onResponse(String s) {
tv.setText(s);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(MainActivity.this, "出错原因:" +
volleyError.getMessage(), Toast.LENGTH_SHORT)
.show();
}
});
//三,给请求对象设置tag标识
request.setTag("get");
//四,将请求添加到请求队列中,执行网络请求
queue.add(request);
break;
case R.id.stringPost: //实现post请求
StringRequest post = new StringRequest(StringRequest.Method.POST,
"http://mobapi.meilishuo.com/2.0/express/recommend_entrance",
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
tv.setText(s);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//将请求条件封装到map对象中
Map<String, String> map = new HashMap<String, String>();
map.put("imei", "000000000000000");
map.put("mac", "08%3A00%3A27%3A51%3A2e%3Aaa");
map.put("qudaoid", "11601");
map.put("access_token", "6c5428735c0a46cbd4bd0ac53fd9da30");
map.put("st", "1429002510");
map.put("_sign", "bf62212d98e50df072288c9e86077939467f9b10");
return map;
}
};
post.setTag("post");
queue.add(post);
break;
case R.id.jsonPost:
JSONObject object = new JSONObject();
try {
object.put("imei", "000000000000000");
object.put("mac", "08%3A00%3A27%3A51%3A2e%3Aaa");
object.put("qudaoid", "11601");
object.put("access_token", "6c5428735c0a46cbd4bd0ac53fd9da30");
object.put("st", "1429002510");
object.put("_sign", "bf62212d98e50df072288c9e86077939467f9b10");
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest jsonPost = new JsonObjectRequest(
JsonObjectRequest.Method.POST,
"http://mobapi.meilishuo.com/2.0/express/recommend_entrance",
object,//jsonObject类型的对象,此对象用于设置本次网络请求的请求条件
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
tv.setText(jsonObject.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}
);
jsonPost.setTag("jsonpost");
queue.add(jsonPost);
break;
}
}
}
</span>
FastJson的简单使用
FastJson是阿里巴巴公司开发的Json数据解析框架,号称解析数据最快。使用方法:
1.导jar包
2.一般在获得json数据的后进行数据的加载解析操作,一般是在JsonObjectRequest第三个参数的回调方法中调用
但是在调用之前,第一步要对解析的数据进行类型封装,属性封装一定要先看看解析的格式和类型,一般此时会有JSONJArray类
型的属性,一定再对该类型进行类的封装,直到都为单一属性即可。此时,一定要对封装的类进行一个无参的构造方法。
比如:MeLiShuo ms = com.alibaba.fastjson.JSONObject.parseObject(jsonObject.toString(),MeLiShuo.class);
美丽说数据接口类型,参数一为json数据,参数二为数据类型.class
list.addAll(ms.getData());Data为其ArrayJSON类型,有过封装之后,传入list集合,在适配器中进行加载。
相关文章推荐
- JS定时运行 setTimeout()
- JS中toFixed()方法的问题及解决方案
- 细读 php json数据和JavaScript json数据
- JSP的学习(2)——语法知识一
- js图片懒加载资源引用
- JavaScript之射击类小游戏的简单示例
- d3.js绘制箭头
- 【JavaScript】兼容IE6的收起折叠效果
- js中阻止默认事件,阻止冒泡事件
- JS 指定天数倒计时 setInterval()
- JSP 自定义标签:简单标签
- JSP的学习(1)——基本知识与底层原理
- D3.js中使用scale
- js拼接字符串传值,子窗口传值
- jsonString 转字典
- JavaScript 继承代码中,B.prototype = new A(); 的含义是什么?[转自知乎]
- 在Javascript面向对象设计一
- 用javascript写一个前端等待控件
- 用javascript写一个前端等待控件
- document.createElement()的用法