转载请标明出处:
http://blog.csdn.net/tyzlmjj/article/details/48973777
本文出自:【M家杰的博客】
Volley特点
- 高效的Get/Post方式的数据请求交互
- 对于频繁进行多次请求的处理比较好
- 性能较为稳定
所需权限
<uses-permission android:name="android.permission.INTERNET"/>
Volley框架的初始化
全局使用同一个类,可控性较高,也比较方便。
最好在Application中初始化(如下代码)
private static RequestQueue requestQueues;
@Override
public void onCreate() {
super.onCreate();
requestQueues = Volley.newRequestQueue(getApplicationContext());
}
public static RequestQueue getQueues() {
return requestQueues;
}
GET/POST请求的使用
请求类
StringRequest
StringRequest(请求模式,url地址, 请求成功的监听,请求出错的监听);
最为常用的方法`,相对另外两种方法通用性比较高。JsonArrayRequest
确定返回数据为JsonArray时使用可以提高一定的效率。JsonObjectRequest
确定返回数据为JsonObject时使用可以提高一定的效率。
回调类
Response.ErrorListener()
接收所有请求错误的返回,返回只有英文!Response.Listener<T>
接收所有请求成功的返回,返回值一般按方法来定,返回String、JsonObject、JsonArray等。
网络请求队列的建立
GET
String url = "http://news-at.zhihu.com/api/4/news/latest";
StringRequest request = new StringRequest(Method.GET, url,
new Listener<String>() {
@Override
public void onResponse(String arg0) {
//数据请求成功
Log.i("volley","GET返回:"+arg0);
}
}, new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError arg0) {
//数据请求失败
Log.i("volley",arg0.toString());
}
});
//加入TAG标签
request.setTag("main_get");
//添加到队列中
MyApplication.getQueues().add(request);
POST
String url = "";
StringRequest request = new StringRequest(Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String arg0) {
//数据请求成功
Log.i("volley", "POST返回:"+arg0);
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
//数据请求失败
Log.i("volley", arg0.toString());
}
}){
//Post在这个方法中写入要传递的参数
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<String,