Android Volley 笔记

来源:互联网 发布:仿内涵段子源码 编辑:程序博客网 时间:2024/05/18 01:16

1.volley简单的介绍:

Volley是一个HTTP库,使Android应用程序变得更加容易,最重要的是,网络 得更快。

Vollry 提供以下好处:

1.自动调度的网络请求。

2.多个并发的网络连接。

3.透明的磁盘和内存缓存使用标准的HTTP响应缓存一致性

4.支持请求优先级。

5.取消请求API。 你可以取消一个单一的请求,或者你可以设定或块 取消的请求范围。

6.例如,易于定制重试和补偿。

7.强烈的要求,便于正确填充界面与数据获取 异步的网络。

Volley非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

2.下载Volley

下载路径:https://android.googlesource.com/platform/frameworks/volley


3.如何使用volley:

Volley提供了一个方便的方法Volley.newRequestQueue设置一个RequestQueue,使用默认值,并启动队列。

  Vollay已经为我们实现了 StringRequest、JsonArrayRequest、JsonObjectRequest、ImageRequest请求

  Volley的用法非常简单,即发起一条HTTP请求,然后接收HTTP响应。首先需要获取到一个RequestQueue对象,调用如下方法获取到:

RequestQueue queue = Volley.newRequestQueue(this);

RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,按照一定的算法并发地发出这些请求。

RequestQueue内部的设计就是非常合适高并发的,因此不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。


<span style="font-family:SimSun;font-size:18px;">String url ="http://www.baidu.com";// Request a string response from the provided URL.StringRequest stringRequest = new StringRequest(Request.Method.GET, url,            new Response.Listener<String>() {    @Override    public void onResponse(String response) {        // Display the first 500 characters of the response string.        mTextView.setText("Response is: "+ response.substring(0,500));    }}, new Response.ErrorListener() {    @Override    public void onErrorResponse(VolleyError error) {        mTextView.setText("That didn't work!");    }});// Add the request to the RequestQueue.queue.add(stringRequest);</span>

StringRequest的构造函数需要传入4个参数,第一个参数是请求的方式(POST,GET,DELETE,PUT),第二个参数是目标服务器的URL地址,第三个参数是服务器响应成功的回调,第四个参数是服务器响应失败的回调

最后,Volley是要访问网络的,不要忘记在你的AndroidManifest.xml中添加如下权限:
<span style="font-family:SimSun;font-size:18px;"><uses-permission android:name="android.permission.INTERNET" />  </span>


如何添加请求参数与头部信息呢?

在StringRequest的匿名类中重写getParams()方法,getHeaders()方法

<pre name="code" class="java">StringRequest stringRequest = new StringRequest(Request.Method.GET, "http://www.baidu.com",new Response.Listener<String>(){@Overridepublic void onResponse(String response) {// TODO Auto-generated method stub}} ,new Response.ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) {// TODO Auto-generated method stub}}){@Overrideprotected Map<String, String> getParams() throws AuthFailureError {// TODO 添加请求参数return super.getParams();}@Overridepublic Map<String, String> getHeaders() throws AuthFailureError {//TODO添加头部 //注意  Content-Type= application/x-www-form-urlencoded 默认已添加return super.getHeaders();}};





是不是很简单呢,使用StringRequest就4步:

volley 的使用遵循以下四步: 
1、获取请求队里RequestQueue 

<span style="font-family:SimSun;font-size:18px;">RequestQueue queue = Volley.newRequestQueue(this);</span>
2、启动请求队列 
<span style="font-family:SimSun;font-size:18px;">queue.start();</span>
以上这两步通常也归为一步 
3、获取请求Request 
<span style="font-family:SimSun;font-size:18px;">StringRequest stringRequest = new StringRequest(...)</span>
4、把请求添加到请求队列中 

<span style="font-family:SimSun;font-size:18px;">queue.add(stringRequest );</span>



同样道理

类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。

JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest,从名字上你应该能就看出它们的区别了吧?

一个是用于请求一段JSON数据的,一个是用于请求一段JSON数组的。

至于它们的用法也基本上没有什么特殊之处,先new出一个JsonObjectRequest对象,如下所示:


<span style="font-family:SimSun;font-size:18px;">JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://www.baidu.com", 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);              }          }); </span>

由此可以看出,服务器返回给我们的数据确实是JSON格式的,并且onResponse()方法中携带的参数也正是一个JSONObject对象,之后只需要从JSONObject对象取出我们想要得到的那部分数据就可以了。

JsonObjectRequest的用法和StringRequest的用法基本上是完全一样的,Volley的易用之处也在这里体现出来了,会了一种就可以让你举一反三,因此关于JsonArrayRequest的用法,也是一样的。


Volley的基本用法就讲到这里、

1 0
原创粉丝点击