Android网络编程(2) Volley框架

前一章说的都是过时的方法,实际应用中,使用的更多是开源的网络请求框架。

这里只讲 Volley 框架

特点

  • 通信快
  • get post 网络请求及网络图像的高效率异步处理请求
  • 对请求排序
  • 网络请求的缓存
  • 多级别取消请求
  • 和 Activity 联动,可以在 Activity 销毁的时候同时关闭请求

使用 StringRequest

①在 Application 类中建立全局的请求队列,整个 app 的请求队列都由它来管理
(Application类是为了那些需要保存全局变量设计的基本类,你可以在 AndroidManifest.xml 的<application>标签中进行自己的实现,这样的结果是:当你的application或者包被建立的时候将引起那个类被建立。)

    public class MyApplication extends Application
    {
            public static RequestQueue requestQueue1;
            
            @Override
            public void onCreate()
            {
                super.onCreate();
                //初始化请求队列,并通过参数指定为整个 application 的请求队列
                requestQueue1 = Volley.newRequestQueue(getApplicationContext());
            }

            //声明一个方法,该方法可以获取这个队列
            public static RequestQueue getHttpQueues()
            {
                return requestQueue1;
            }
    }

别忘了注册到 Manifest 中以及添加网络权限

image.png

  • get 方式
image.png

  • post 方式
image.png

使用 JsonRequest

类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest,从名字上你应该能就看出它们的区别了吧?一个是用于请求一段JSON数据的,一个是用于请求一段JSON数组的。

使用方法是一样的,将 String 对象变成 JsonRequest 对象即可

需要注意的是

  • 使用 get 方法时,

  • 使用 post 方法时,需要上传的参数要用 JSON 对象,在 new json 的请求队列时,将该对象作为参数传递,而不是通过像创建 StringRequest 对象而重写 getParams 的方式。

image.png

解析得到的 json 对象

例如下面这个接口提供的返回 JSON 的格式

image.png

我们在 new Response.Listener 后重写 onResponse 方法时,将得到的 JSON 对象作为参数进行处理,方法有

image.png

这样,比如对于键 “status” ,他的键值为 int 类型切数值为 200,我们可以用 getInt 方法获得,同样,键 “data” 为 JSONObject 类型,我们用 getJSONObject 方法来获取,再一层层往下获取相应的参数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,127评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,049评论 25 709
  • AFHTTPRequestOperationManager 网络传输协议UDP、TCP、Http、Socket、X...
    Carden阅读 4,940评论 0 12
  • iOS网络编程读书笔记 Facade Tester客户端门面模式的实例(被动版本化) 被动版本化,所以硬编码URL...
    melouverrr阅读 1,648评论 3 7
  • 人生的二十一年已经成为过去,但是我好像从来没有过偶像。 一开始,很羡慕明星们可以拿着很多人拿不了的高薪,过着衣食无...
    左左左良玉阅读 524评论 0 0