Volley 的使用以及自定义Request
Volley 的使用以及自定义Request
一.什么是 Volley
2013年Google I/O大会上推出了一个新的网络通信框架。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。Volley特别适合数据量不大但是通信频繁的场景。
二.使用
1. 简单请求
现在,我访问百度首页通过 Volley 提供给我的 Request-->StringRequest()
从图中,可以到 StringRequest 这个类需要我们提供--请求方式(是 get 还是 post),请求地址,正确返回数据接口的回调和请求发生错误接口的回调!!
大家有可能注意到了,当我们写完请求之后,我们就像请求队列里添加了这个请求,之后请求就执行啦!!这只是GET请求!
那接下来,我给大家演示一下 post 的请求。请看图
从图中大家可以看到了!我只是修改了一下请求方式,把 get 改成了 post! 另外,我重写了 Request 这个方法中的 getParams() 方法!那它是干什么用的呢?他就是返回我们的请求参数的!使用者只要把 key-value放入 HashMap中就行啦!
不知道,大家注意到没有!这两个请求我都调用了这个方法 request.setTag("baidu"); 我为啥要调用这个方法嘞?其实是有原因的!在Volley框架中,我们可以给每个请求设置tag,这样我们就可以在 activity 或者 fragment 生命结束的时候(onDestory())中在代用这个方法 queue.cancelAll("baidu"); 这个就可以取消正在请求的请求了(当然tag要一致哦)。避免出现空指针异常!
2.自定义请求
首先,我们来看一下 StringRequest 类的源码:
从图中,我们可以看到,StringRequest 也是继承 Request 这个泛型类的。继承这个类,我们要重写来两个方法
deliverResponse(String response) 和 parseNetworkResponse(NetworkResponse response) 这个两个方法具体做什么,我已在图中写了注释!其实很简单!如果,看懂了这个,我们就可以自己写 Request 了!在这个我还说明一下
NetworkResponse 这个类中包含了服务器返回的结果,返回头等。其中的 response.data 这个是一个 byte 数组!
response.headers 这个是请求头数据! HttpHeaderParser.parseCharset(response.headers) 这个就是服务器返回的编码方式!之后就是简单的 new 个字符串了!
-----------------------------------------开始自定义喽-------------------------------------
大家在平时的开发中和服务器的数据交互一般都是 json 格式的数据!那么现在就来自定义个 JSONRequest 请求!我先直接上代码
可以看到,JSONRequest 是继承自 Request 类的。在parseNetworkResponse()方法中,先是将服务器响应的数据解析出来,然后通过调用 FastJson 的 parseObject 方法将数据组装成对象。在deliverResponse方法中仍然是将最终的数据进行回调.
在这里,我想先说一下我在继承 Request 时比较常覆写的几个方法以及它们的含义!
Map<String, String> getParams();用来返回请求参数的。
Map<String, String> getHeaders();用来返回请求头的!我们可以用来返回指定的请求头!
RetryPolicy getRetryPolicy();用来返回超市时间的!
String getParamsEncoding();用来返回请求数据的编码的!
好了至此。Volley 的讲解就此完了!!接下的博文 我就开始写 Volley 了!第一次说源码方面的东西~~~
Volley 的使用以及自定义Request的更多相关文章
- Volley(五)—— 自定义Request
详细解读Volley(四)—— 自定义Request Volley中提供了几个Request,如果我们有特殊的需求,完全可以自定义Request的,自定义Request自然要继承Request,那么本 ...
- 详细解读Volley(四)—— 自定义Request
Volley中提供了几个Request,如果我们有特殊的需求,完全可以自定义Request的,自定义Request自然要继承Request,那么本篇就教大家来一步一步地定义一个自己的Request类. ...
- Volley自定义Request及使用单例封装RequestQueue
一.自定义Request Volley的所有的请求的超类型是Resuest,所有我们常用的请求都是这个类的子类,那么我们自定义View肯定也是基于这个类的. 案例: package com.zhy.v ...
- Android Volley 之自定义Request
转载标明出处:http://blog.csdn.net/lmj623565791/article/details/24589837 今天群里一哥们需要自定义Volley的Request的例子,于是产生 ...
- Volley(二)—— 基本Request对象 & RequestQueue&请求取消
详细解读Volley(一)—— 基本Request对象 & RequestQueue&请求取消 Volley它非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作, ...
- 详细解读Volley(一)—— 基本Request对象 & RequestQueue
Volley它非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕.所以不建议用它去进行下载文件.加载大图的操作.有人可能会问,如 ...
- Volley(三)—— ImageRequest & Request简介
Volley(三)—— ImageRequest & Request简介 上 篇文章我们讲 到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型 ...
- [Android] 开源框架 Volley 自定义 Request
今天在看Volley demo (https://github.com/smanikandan14/Volley-demo), 发现自定义GsonRequest那块代码不全, 在这里贴一个全的. pu ...
- Android网络开发之Volley--Volley自定义Request
1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...
随机推荐
- Oracle 导入导出SQL 查看登录用户表个数
导出 : --注意结尾不能加分号; 导入 IMP HLMARKET/HLMARKET@192.168.1.22:1521/orcl file=e:/db/HLMARKET_20150729.dmp f ...
- Java 变长參数Varargs
Varargs (variable arguments)可变长參数是Java 1.5引入的特性. 方法的形參如print(String ... s),实參为随意数目的值. public class V ...
- JMeter高速应用
过去长期用loadrunner做性能測试.可是渐渐认为有些麻烦了: 1.仅仅能执行在windows环境下,而生产环境差点儿清一色的linux.为了在同一网段做性能或压力測试,还须要单独部署一套wind ...
- struts2中 jsp:forward 失败原因及解决办法
问题:在Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效了,不但调转不过去还报404错误.不知 ...
- 自定义基于XML的验证器
a.编写一个类,继承FieldValidatorSupport类. b.在public void validate(Object object)编写你的验证逻辑 不符合要求的就向fieldErrors ...
- 开源框架AsyncHttpClient使用
开源框架AsyncHttpClient使用 2013-10-14 15:16:35 分类: Android平台 在大神岩岩的推荐下使用了AsyncHttpClient框架,用过之后感觉还是灰常好用滴. ...
- GTD实用指南(转载)
时间管理第一层:记录每日时间开支,认识自己的时间黑洞.你会惊讶地发现,每天的无意义时间很可能在70%以上. [避开时间黑洞的小策略:1.彻底关闭聊天工具:2.关掉邮件的到达提醒功能:3.保持办公环境的 ...
- atitit.浏览器web gui操作类库 和 操作chrome浏览器的类库使用总结
atitit.浏览器web gui操作类库 和 操作chrome浏览器的类库使用总结 1. 常见标准 1 1.1. 录制重放 1 1.2. 一个窗体一个proxy cookie 1 1.3. exec ...
- 3.Queues(队列)
一.概述 C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构,与stack刚好相反. 二.常用API back() 返回最后一个元素 empty() 如果队列空则返回真 fro ...
- LDAP实战应用指南
第1章 ladp master服务安装 1.1 安装前系统环境准备 1.1.1 查看系统版本信息 [root@ldap-server ~]# cat /etc/redhat-release CentO ...