2015-12-17 更新日志
距离这篇文章已经过去这么旧了。我也用了这么久的Volley,也总结了一些它的方法,制作了个工具类,链接:
https://github.com/mBigFlower/volley-utils
-----------------------------------------------------------------------------
最近打算用Volley作为某个项目的网络请求框架。
废话先不多说,转载别人的:http://www.kwstu.com/ArticleView/kwstu_20144118313429
jar包的话他的文章里也有提到,感觉还是挺新的包吧,我重新上传到CSDN里了,方便下载:Volley.jar下载
具体的用法链接里很清楚了,我这里只是做一个小结,因为自己也是个小白,有不对的还希望大家批评指出:
有一点我很喜欢,在回调里可以直接更新UI。想当初自己写请求的时候,每次回调里都要加一个Handler。
请求方法有四种:Get, Post, Put, Delete
网络请求分三步:
1 初始化
RequestQueue mQueue = Volley.newRequestQueue(context);
值得注意的一点 RequestQueue记得用单例,如果每次请求都新建一个
RequestQueue mQueue = Volley.newRequestQueue(context);
会造成内存泄漏哈,我用DDMS测试的,应该是有风险的
StringRequest stringRequest = new StringRequest("http://www.baidu.com",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("TAG", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
}
});
3 开始请求(把请求加入了一个队列?),add了就开始请求了
mQueue.add(stringRequest);
上面是网络请求的一种方法,有正确和错误两种回调,回调结果为String ; 另一种方式回调结果可以是Json
步骤还是那三步,不过第二步变成了这样:
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
}
});
具体使用哪种方法看个人喜好了。
其实Volley的功能远不止如此,我这里只是个入门级的。
有些情况我们跟服务器交互的时候需要在Header里面添加something,方法出自: http://blog.csdn.net/tcpipstack/article/details/39084245
只需要在第二步的后面加点东西:
StringRequest stringRequest = new StringRequest ("http://120.25.147.61/basic/system/time",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Util.d("TAG", response);
Glide();
initPhoto();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Util.e("TAG", error.getMessage());
}
}){
@Override
public Map<String, String> getHeaders()
throws AuthFailureError {
SharedPreferences mSp = getSharedPreferences("USER", Context.MODE_PRIVATE);
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Cookie", "**************************");
headers.put("content-type", "application/x-www-form-urlencoded");
return headers;
}
};
重点是这句话:
@Override
public Map<String, String> getHeaders()
throws AuthFailureError {
SharedPreferences mSp = getSharedPreferences("USER", Context.MODE_PRIVATE);
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Cookie", "**************************");
headers.put("content-type", "application/x-www-form-urlencoded");
return headers;
}
RequestQueue mQueue = Volley.newRequestQueue(context);