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地址,第三个参数是服务器响应成功的回调,第四个参数是服务器响应失败的回调
<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的基本用法就讲到这里、
- Android Volley 笔记
- Android Volley 学习笔记 1
- Android Volley框架学习笔记
- Android-volley框架学习笔记
- 【Android开发】Volley学习笔记
- android volley关于缓存笔记
- android Volley源码解析笔记
- android 菜瓜笔记之volley初步
- android开发笔记之Volley (1)
- Android网络编程之Volley开发笔记
- Android Volley 学习笔记(一)
- Android Volley & Retrofit2 & Http基础知识 笔记
- Volley框架实现Android网络请求笔记
- Android框架学习笔记04Volley框架
- Android 网络请求框架Volley学习笔记
- Android Volley网络框架使用笔记
- Volley笔记
- Volley 笔记
- HTML5来了,7个混合式移动开发框架
- Unhandled exception in ***.exe(OLE32.DLL):0xC0000005:Access Violation
- CSS的margin塌陷
- 拦截器和过滤器
- 基于大并发大流量大存储的大型网站优化
- Android Volley 笔记
- 1012. 数字分类 (20)
- Keil MDK中 ST/Link 硬件仿真的配置,解决不进入main函数的方法
- 深入理解Java虚拟机-学习笔记(1)Java内存区域
- 数据结构与算法(4)--队列
- android中shape、selector、color
- 系统内存分配的首次适应算法和最佳适应算法链表模拟实现
- Xml处理——快速定位Xml节点和获取数据
- 制作initrd(2):update-initramfs和mkinitramfs脚本分析