Volley用法全解析

转载刘望舒的博客Android网络编程(三)Volley用法全解析

前言

Volley想必很多人都用过,为了建立网络编程的知识体系,Volley是必须要讲的知识点,所以我这里有必要再次介绍一下Volley的使用。

1.Volley简介
在2013年Google I/O大会上推出了一个新的网络通信框架Volley。Volley既可以访问网络取得数据,也可以加载图片,并且在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。在使用Volley前请下载Volley库并放在libs目录下并add到工程中。 下载Volley请点击这

2.Volley网络请求队列
Volley请求网络都是基于请求队列的,开发者只要把请求放在请求队列中就可以了,请求队列会依次进行请求,一般情况下,一个应用程序如果网络请求没有特别频繁则完全可以只有一个请求队列(对应Application),如果非常多或其他情况,则可以是一个Activity对应一个网络请求队列,这就要看具体情况了,首先创建队列:

RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());

3.StringRequest的用法
StringRequest返回的数据是String类型的,我们查看下StringRequest的源码:

public class StringRequest extends Request<String> { 
private final Listener<String> mListener; 
public StringRequest(int method, String url, Listener<String> listener, ErrorListener errorListener) { 
  super(method, url, errorListener);
   this.mListener = listener;
 } 
public StringRequest(String url, Listener<String> listener, ErrorListener errorListener) {
   this(0, url, listener, errorListener);
 }
...省略}

有两个构造函数,其中第一个比第二个多了一个请求的方法,如果采用第二个则默认是GET请求。好了,我们试着用GET方法来请求百度:

 //创建请求队列
 RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext()); 
StringRequest mStringRequest = new StringRequest(Request.Method.GET, "http://www.baidu.com", new Response.Listener<String>() {
    @Override 
   public void onResponse(String response) { 
  Log.i("wangshu", response); 
  } 
   }, new Response.ErrorListener() { 
      @Override
      public void onErrorResponse(VolleyError error) { 
      Log.e("wangshu", error.getMessage(), error); 
    } 
}); 
//将请求添加在请求队列中 
mQueue.add(mStringRequest);

当然别忘了添加网络访问权限:

<uses-permission android:name="android.permission.INTERNET"/>

4.JsonRequest的用法
和StringRequest类似,我们直接上代码:

 RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext()); 
JsonObjectRequest mJsonObjectRequest = new JsonObjectRequest(Request.Method.POST,"http://api.1-blog.com/biz/bizserver/article/list.do", new Response.Listener<JSONObject>() { 
@Override public void onResponse(JSONObject response) { 
Log.d("wangshu", response.toString()); 
}
 }, new Response.ErrorListener() { 
@Override public void onErrorResponse(VolleyError error) { 
Log.e("wangshu", error.getMessage(), error);
 } 
} ); 
mQueue.add(mJsonObjectRequest);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 Volley想必很多人都用过,为了建立网络编程的知识体系,Volley是必须要讲的知识点,所以我这里有必要再...
    刘望舒阅读 3,980评论 2 8
  • Volley简介 Volley 是 Google I/O 2013上发布的网络通信库,使网络通信更快、更简单、更健...
    shenhuniurou阅读 4,615评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,807评论 25 709
  • 1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都...
    奥利奥龙卷风阅读 3,459评论 0 2
  • 想记录的时候是否需要特别的时间事件或心情? 坐在桌前敲打的这篇文字的时候,窗外已经下了4天的雨。以至于情绪不高的我...
    假心阅读 890评论 0 1