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的更多相关文章

  1. Volley(五)—— 自定义Request

    详细解读Volley(四)—— 自定义Request Volley中提供了几个Request,如果我们有特殊的需求,完全可以自定义Request的,自定义Request自然要继承Request,那么本 ...

  2. 详细解读Volley(四)—— 自定义Request

    Volley中提供了几个Request,如果我们有特殊的需求,完全可以自定义Request的,自定义Request自然要继承Request,那么本篇就教大家来一步一步地定义一个自己的Request类. ...

  3. Volley自定义Request及使用单例封装RequestQueue

    一.自定义Request Volley的所有的请求的超类型是Resuest,所有我们常用的请求都是这个类的子类,那么我们自定义View肯定也是基于这个类的. 案例: package com.zhy.v ...

  4. Android Volley 之自定义Request

    转载标明出处:http://blog.csdn.net/lmj623565791/article/details/24589837 今天群里一哥们需要自定义Volley的Request的例子,于是产生 ...

  5. Volley(二)—— 基本Request对象 & RequestQueue&请求取消

    详细解读Volley(一)—— 基本Request对象 & RequestQueue&请求取消 Volley它非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作, ...

  6. 详细解读Volley(一)—— 基本Request对象 & RequestQueue

    Volley它非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕.所以不建议用它去进行下载文件.加载大图的操作.有人可能会问,如 ...

  7. Volley(三)—— ImageRequest & Request简介

    Volley(三)—— ImageRequest & Request简介 上 篇文章我们讲 到了如何用volley进行简单的网络请求,我们可以很容易的接受到string.JsonObjec类型 ...

  8. [Android] 开源框架 Volley 自定义 Request

    今天在看Volley demo (https://github.com/smanikandan14/Volley-demo), 发现自定义GsonRequest那块代码不全, 在这里贴一个全的. pu ...

  9. Android网络开发之Volley--Volley自定义Request

    1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...

随机推荐

  1. hibernate 多对一关联

    (转自尚学堂教学内容)   注解多对一: package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.pers ...

  2. XML的SelectNodes使用方法以及XPath(转)

    XPath 是 XML 的内容,这里 SelectNodes 是 C# 中 XmlDocument 或 XmlNode 的一个方法.SelectNodes 使用 XPath 来选取节点. 重要语法 S ...

  3. iOS百度地图

    一.百度地图sdk具体使用过程,參考以下的博客(我感觉非常具体.并且有问题能够找楼主.他会给解答,感谢好心人-): 怎样使用百度地图sdk,及相关demo下载 上述博客给的demo,是真机执行的(百度 ...

  4. SSH(Struts2+Spring4+Hibernate4)框架教程之配置篇

    SSH(Struts2+Spring4+Hibernate4)框架教程之配置篇 - 若明天不见 - 博客频道 - CSDN.NEThttp://blog.csdn.net/why_still_conf ...

  5. swift中的nil与Objective-C中的nil区别

    1.OC中,只有对象才能设置为nil,而swift中除了对象,Int.struct.enum等任何可选类型都可以等于nil 2.OC中,nil是一个指向不存在对象的指针.swift中,nil不是指针, ...

  6. Fiddler-抓取安卓手机APP请求地址

    第一步:下载神器Fiddler,下载链接: http://fiddler2.com/get-fiddler 下载完成之后,傻瓜式的安装一下了! 第二步:设置Fiddler打开Fiddler,     ...

  7. tortoisesvn帮助手册

    http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/index.html

  8. 物联网通信协议——比较-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP

    物联网通信协议——比较-MQTT. DDS. AMQP.XMPP. JMS. REST. CoAP   AMQP & MQTT & DDS (https://www.youtube.c ...

  9. layer弹窗的操作方法

    1.首先去http://layer.layui.com/下载插件 2.在网站上有演示说明 3.操作方法如何 <script src="../js/layer/layer.js" ...

  10. 远程调试 Weinre

    什么是远程调试? 说白了,就是可以通过PC端[F12开发者工具]查看并调试移动端的页面内容,如html.css.js.Network资源等. 重要的事情说三遍:weinre所占有的端口不需要和监听页面 ...