Volley是谷歌发布的提供的网络通讯库。
一、Volley提供:
1、GET,POST网络请求和网络图像的高效的异步处理请求
2、网络请求优先级的排序
3、网络请求的缓存
4、多级别取消请求
5、和Activity生命周期的联动
优点:高效的GET/POST数据请求交互,网络图片的加载和缓存。
谷歌官方推出,性能稳定高效
缺点:不适合文件的上传与下载
二、GET/POST请求接口数据的使用:
三、其他:1、当对于返回的解析数据类型不确定时:
StringRequest
2、返回的解析数据类型确定是以下两种之一:
JsonObjectRequest
JsonArrayRequest
1、建立一个全局的请求队列,整个应用的请求都通过这个队列管理。
2、Volley与Activity生命周期的联动,可以在Activity销毁时同时关闭请求。通过设置Tag标签,以此寻找请求,最后在onStop()里进行销毁。
String/GET
String/POSTprivate void volleyGet() { StringRequest request=new StringRequest(Method.GET, url, new Listener<String>() { @Override public void onResponse(String response) { // 数据请求成功返回 Log.e("tony", "volleyGet"); Log.e("tony", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // 数据请求失败返回 Log.e("tony", error.toString()); } }); //为这个请求设置Tag request.setTag("Get001"); //将请求添加入全局队列 MyApplication.getHttpQueues().add(request); }
public void VolleyPost(){ StringRequest request=new StringRequest(Method.POST, postUrl, new Listener<String>() { @Override public void onResponse(String response) { // 数据请求成功返回 Log.e("tony", "VolleyPost"); Log.e("tony", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // 数据请求失败返回 Log.e("tony", error.toString()); } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> hashMap=new HashMap<String, String>(); hashMap.put("ip", "202.96.128.146"); return hashMap; } }; //为这个请求设置Tag request.setTag("Post001"); //将请求添加入全局队列 MyApplication.getHttpQueues().add(request); }
JSONObject/GET
public void JsonObjectGet(){ JsonObjectRequest request=new JsonObjectRequest(Method.GET, url, null, new Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // TODO Auto-generated method stub Log.e("tony", "JsonObject"); Log.e("tony", response.toString()); } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub Log.e("tony", error.toString()); } }); //为这个请求设置Tag request.setTag("GetJSOB001"); //将请求添加入全局队列 MyApplication.getHttpQueues().add(request); }
JSONObject/POST
public void JsonObjectPost(){ String JBurl = "http://apis.juhe.cn/mobile/get?"; HashMap<String, String> hashMap=new HashMap<String,String>(); hashMap.put("phone", "13429667914"); hashMap.put("key", "335adcc4e891ba4e4be6d7534fd54c5d"); JSONObject jsonParams =new JSONObject(hashMap); JsonObjectRequest request=new JsonObjectRequest(Method.POST, JBurl, jsonParams , new Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { // TODO Auto-generated method stub Log.e("tony", "JsonObjectPOST"); Log.e("tonyres", response.toString()); } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub Log.e("tonyerr", error.toString()); } }); //为这个请求设置Tag request.setTag("PostJSOB001"); //将请求添加入全局队列 MyApplication.getHttpQueues().add(request); }