zoukankan      html  css  js  c++  java
  • 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 了!第一次说源码方面的东西~~~

  • 相关阅读:
    线程进程之间的关系
    socket网络编程
    Docker在github上的站点
    大型网站架构体系的演变
    centos7 安装SSH
    如何在CentOS 7中禁用IPv6
    在 Docker 上运行一个 RESTful 风格的微服务
    docker 操作命令详解
    玩转Docker镜像
    搭建自己的 Docker 私有仓库服务
  • 原文地址:https://www.cnblogs.com/likeandroid/p/4508814.html
Copyright © 2011-2022 走看看