Android Volley
1.volley简单的介绍:
Volley是一个HTTP库,使Android应用程序变得更加容易,最重要的是,网络 得更快。
Vollry 提供以下好处:
1.自动调度的网络请求。
2.多个并发的网络连接。
3.透明的磁盘和内存缓存使用标准的HTTP响应缓存一致性。
4.支持请求优先级。
5.取消请求API。 你可以取消一个单一的请求,或者你可以设定或块 取消的请求范围。
6.例如,易于定制重试和补偿。
7.强烈的要求,便于正确填充界面与数据获取 异步的网络。
Volley非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。
2.下载Volley
下载路径:https://android.googlesource.com/platform/frameworks/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<String>() {
@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中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
如何添加请求参数与头部信息呢?
在StringRequest的匿名类中重写getParams()方法,getHeaders()方法
StringRequest stringRequest = new StringRequest(Request.Method.GET, "http://www.baidu.com",new Response.Listener<String>(){
@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<String, String> getParams() throws AuthFailureError {
// TODO 添加请求参数
return super.getParams();
}
@Override
public Map<String, String> 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<JSONObject>() {
@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的基本用法就讲到这里、
Android Volley的更多相关文章
- Android Volley gives me 400 error
本文来自:http://stackoverflow.com/questions/21739276/android-volley-gives-me-400-error 本人是根据文中的其中一方法: I ...
- [Android]Volley的使用
Volley是Google I/O 2013上提出来的为Android提供简单快速网络访问的项目.Volley特别适合数据量不大但是通信频繁的场景. 优势 相比其他网络载入类库,Volley 的优势官 ...
- [转] Android Volley完全解析(一),初识Volley的基本用法
版权声明:本文出自郭霖的博客,转载必须注明出处. 目录(?)[-] Volley简介 下载Volley StringRequest的用法 JsonRequest的用法 转载请注明出处:http ...
- Android Volley入门到精通:定制自己的Request
经过前面两篇文章的学习,我们已经掌握了Volley各种Request的使用方法,包括StringRequest.JsonRequest.ImageRequest等.其中StringRequest用于请 ...
- Android Volley入门到精通:使用Volley加载网络图片
在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完 ...
- Android Volley入门到精通:初识Volley的基本用法
1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...
- Android Volley完全解析
1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...
- Android Volley和Gson实现网络数据加载
Android Volley和Gson实现网络数据加载 先看接口 1 升级接口 http://s.meibeike.com/mcloud/ota/cloudService POST请求 参数列表如下 ...
- [Android Exception 1A] -com.android.volley.NoConnectionError: java.io.InterruptedIOException
- ::-/com.tongyan.tutelage W/System.err: com.android.volley.NoConnectionError: java.io.InterruptedIO ...
- Android Volley源码分析
今天来顺手分析一下谷歌的volley http通信框架.首先从github上 下载volley的源码, 然后新建你自己的工程以后 选择import module 然后选择volley. 最后还需要更改 ...
随机推荐
- Nova PhoneGap框架 第一章 前言
Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...
- 站在风口,你或许就是那年薪20w+的程序猿
最近面试了一些人,也在群上跟一些群友聊起,发现现在的互联网真是热,一些工作才两三年的期望的薪资都是十几K的起,这真是让我们这些早几年就成为程序猿的情何以堪!正所谓是站在风口上,猪也能飞起来!我在这里就 ...
- 写自己的Socket框架(三)
在通信写完了以后,应用层接收到Socket抛上来的byte[],这个时候对于实际的写逻辑的开发者来说,这样的数据并不友好,我们就需要在应用层统一一个包的规则(应用层协议),处理完以后,然后再传给实际的 ...
- 序列化笔记之一:Google的Protocol Buffer格式分析
从公开介绍来看,ProtocolBuffer(PB)是google 的一种数据交换的格式,它独立于语言,独立于平台.作为一个学了多年通信的人,ProtocolBuffer在我看来是一种信源编码.所谓信 ...
- 使用python实现短信PDU编码
前几天入手一个3G模块,便倒腾了一下.需要发送中英文混合短信,所以采用PDU模式(不了解google ^_^). 最大问题当然就是拼接PDU编码(python这么强大,说不定有模块),果不其然找到一个 ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- ZeroMQ:云时代极速消息通信库
ZeroMQ:云时代极速消息通信库(大规模|可扩展|低成本|高效率解决之道,大规模分布式|多线程应用程序|消息传递架构构建利器) [美]Pieter Hintjens(皮特.亨特金斯)著 卢涛 李 ...
- WCF学习之旅—第三个示例之五(三十一)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) WCF学习 ...
- Hexo的coney主题的一些补充说明
title: Hexo的coney主题的一些补充说明 date: 2014-12-14 14:10:44 categories: Hexo tags: [hexo,技巧] --- Coney是一个非常 ...
- PHP开发环境的配置
PHP的开发环境主要包括:安装和配置Apache服务器.PHP引擎以及MySQL数据库服务器,另外选用Dreamweaver作为PHP的开发工具. 1.安装和测试Apache 首先下载Apache:官 ...