博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Volley
阅读量:6248 次
发布时间:2019-06-22

本文共 3742 字,大约阅读时间需要 12 分钟。

1.volley简单的介绍:

Volley是一个HTTP库,使Android应用程序变得更加容易,最重要的是,网络 得更快。

 

Vollry 提供以下好处:

1.自动调度的网络请求。

2.多个并发的网络连接。

3.透明的磁盘和内存缓存使用标准的HTTP响应缓存一致性

4.支持请求优先级。

5.取消请求API。 你可以取消一个单一的请求,或者你可以设定或块 取消的请求范围。

6.例如,易于定制重试和补偿。

7.强烈的要求,便于正确填充界面与数据获取 异步的网络。

 

Volley非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

 

2.下载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对象就足够了。

 

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
() { @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);

  

StringRequest的构造函数需要传入4个参数,第一个参数是请求的方式(POST,GET,DELETE,PUT),第二个参数是目标服务器的URL地址,第三个参数是服务器响应成功的回调,第四个参数是服务器响应失败的回调

最后,Volley是要访问网络的,不要忘记在你的AndroidManifest.xml中添加如下权限:

  

如何添加请求参数与头部信息呢?

在StringRequest的匿名类中重写getParams()方法,getHeaders()方法

 

StringRequest stringRequest = new StringRequest(Request.Method.GET, "http://www.baidu.com",new Response.Listener
(){ @Override public void onResponse(String response) { // TODO Auto-generated method stub } } ,new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO Auto-generated method stub } }){ @Override protected Map
getParams() throws AuthFailureError { // TODO 添加请求参数 return super.getParams(); } @Override public Map
getHeaders() throws AuthFailureError { //TODO添加头部 //注意 Content-Type= application/x-www-form-urlencoded 默认已添加 return super.getHeaders(); } };

  

是不是很简单呢,使用StringRequest就4步:

 

 

volley 的使用遵循以下四步: 

1、获取请求队里RequestQueue 

RequestQueue queue = Volley.newRequestQueue(this);

2、启动请求队列 

queue.start()

  以上这两步通常也归为一步 

3、获取请求Request 

StringRequest stringRequest = new StringRequest(...)

4、把请求添加到请求队列中 

queue.add(stringRequest );

  

同样道理

 

类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。

JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest,从名字上你应该能就看出它们的区别了吧?

一个是用于请求一段JSON数据的,一个是用于请求一段JSON数组的。

至于它们的用法也基本上没有什么特殊之处,先new出一个JsonObjectRequest对象,如下所示:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://www.baidu.com", null,            new Response.Listener
() { @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); } });

  

由此可以看出,服务器返回给我们的数据确实是JSON格式的,并且onResponse()方法中携带的参数也正是一个JSONObject对象,之后只需要从JSONObject对象取出我们想要得到的那部分数据就可以了。

JsonObjectRequest的用法和StringRequest的用法基本上是完全一样的,Volley的易用之处也在这里体现出来了,会了一种就可以让你举一反三,因此关于JsonArrayRequest的用法,也是一样的。

 

Volley的基本用法就讲到这里、

转载于:https://www.cnblogs.com/kevin-chen/p/5008067.html

你可能感兴趣的文章
在CentOS7上安装MongDB【4.0.0版本】
查看>>
Juniper SRX 240 DY×××用户登录日志
查看>>
入门一班 201801012 管道符
查看>>
Cs6/7笔记01.5、安装Centos6、7
查看>>
开源工具Arena,数据科学家再也不用为Kubernetes犯难啦!
查看>>
JavaScript初学者必看“箭头函数”
查看>>
ffmpeg 使用小记
查看>>
变频电源六大故障及处理方法
查看>>
HBase核心知识点总结
查看>>
朋友圈唯美的心灵鸡汤语录,句句经典入心
查看>>
怎么还原回收站删除的文件?这个操作最实用
查看>>
相机SD卡数据恢复,必知小技巧
查看>>
如何发送和接收 Windows Phone 的磁贴通知
查看>>
配置pxe自动化安装centos系统
查看>>
C语言之为数据类型定义别名
查看>>
HTML DOM 之 DOM对象:Document Object Model (文档对象模型)
查看>>
【网络编程】大端模式和小端模式(大头序和小头序)
查看>>
Angular之Rxjs基础操作
查看>>
U3D笔记(三)
查看>>
js date日期 英文月份
查看>>