文档章节

Volley 基本用法

小强强强
 小强强强
发布于 2015/03/23 18:14
字数 890
阅读 38
收藏 1

GitHubDemo  https://github.com/smanikandan14/Volley-demo#handling-error-codes

Volley源码   https://github.com/mcxiaoke/android-volley

Google IO2013网络框架Volley 演讲PDF http://download.csdn.net/source/preview/5686041/3f5f45640aca1b5c0cdc98fdafbac93d

Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮

特点 : Volley特别适合数据量不大但是通信频繁的场景

Volley提供的功能

  • JSON,图像等的异步下载;

  • 网络请求的排序(scheduling)

  • 网络请求的优先级处理

  • 缓存

  • 多级别取消请求

  • 和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)

git clone https://android.googlesource.com/platform/frameworks/volley

网络请求的应用

1. 发起一条基本的HTTP请求

    StringRequest(Get请求,无请求参数)

RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
// 默认是Get方式 可以在源码 StringRequest 类中的构造方法中找到 如下
// public StringRequest(String url, Listener<String> listener, ErrorListener errorListener) {
//      this(Method.GET, url, listener, errorListener);
//  }
// 第一个参数 访问的URL, 第二个参数 响应后返回的结果监听, 第三个参数 响应出错返回的结果监听
StringRequest stringRequest = new StringRequest("http://www.baidu.com",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {//请求正确后相应结果
                        Log.d("TAG", response);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {//请求出错结果
                        Log.e("TAG", error.getMessage(), error);
                    }
                });
//设置超时
//DefaultRetryPolicy 中第一个参数 超时时间, 第二个参数最多请求次数, 第三个参数是一个乘数因子,
//比如 超时时间是5s,乘数因子是2, 下次请求的时间就是10s后请求
stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 2, 2f));
// 设置Tag值 可以在界面被销毁时 用来移除该网络请求
stringRequest.setTag(MYGET_TAG);
mQueue.add(stringRequest);

StringRequest(Post请求,无请求参数)

RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
// 第一个参数 请求方式, 第二个参数 访问的URL, 第三个参数 响应后返回的结果监听, 
// 第四个参数 响应出错返回的结果监听
StringRequest stringRequest = new StringRequest(Method.POST,"http://www.baidu.com",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {//请求正确后相应结果
                        Log.d("TAG", response);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {//请求出错结果
                        Log.e("TAG", error.getMessage(), error);
                    }
                });
//设置超时
//DefaultRetryPolicy 中第一个参数 超时时间, 第二个参数最多请求次数, 第三个参数是一个乘数因子,
//比如 超时时间是5s,乘数因子是2, 下次请求的时间就是10s后请求
stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 2, 2f));
// 设置Tag值 可以在界面被销毁时 用来移除该网络请求
stringRequest.setTag(MYGET_TAG);
mQueue.add(stringRequest);

StringRequest(Post请求,有请求参数)

//这里的参数是Map形式的
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
// 第一个参数 请求方式, 第二个参数 访问的URL, 第三个参数 响应后返回的结果监听, 
// 第四个参数 响应出错返回的结果监听
StringRequest stringRequest = new StringRequest(Method.POST,"http://www.baidu.com",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {//请求正确后相应结果
                        Log.d("TAG", response);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {//请求出错结果
                        Log.e("TAG", error.getMessage(), error);
                    }
                }{
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> map = new HashMap<String, String>();
                map.put("param1", "0");
                map.put("param2", "5");
                return map;
            }
        });
//设置超时
//DefaultRetryPolicy 中第一个参数 超时时间, 第二个参数最多请求次数, 第三个参数是一个乘数因子,
//比如 超时时间是5s,乘数因子是2, 下次请求的时间就是10s后请求
stringRequest.setRetryPolicy(new DefaultRetryPolicy(5000, 2, 2f));
// 设置Tag值 可以在界面被销毁时 用来移除该网络请求
stringRequest.setTag(MYGET_TAG);
mQueue.add(stringRequest);



本文转载自:http://blog.csdn.net/t12x3456/article/details/9221611 ;

小强强强
粉丝 5
博文 25
码字总数 6220
作品 0
海淀
程序员
私信 提问
Android Volley学习

开发android应用很多时候都要涉及网络操作,Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图...

JeremyDai
2016/05/05
75
0
【Android】android Volley完全解析(一)

前言 Volley是一个由Google官方推出的网络通信库,它使得Android进行网络请求时更加方便、快速、健壮,同时对网络图片加载也提供了良好的支持。 不过HttpURLConnection和HttpClient的用法还是...

定陶黄公子
2016/12/13
295
0
Android Volley完全解析(一),初识Volley的基本用法

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482095 1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用...

mingxun
2014/04/18
0
0
【Android】android Volley完全解析(二)

第一篇Volley的详解:https://my.oschina.net/u/2547914/blog/805196 上一篇文章我们讲解了StringRequest和JsonRequest的基本使用方法,那么接下来我们接着上一篇文章接着写,这篇我们讲解关...

定陶黄公子
2016/12/13
29
0
Android 开源项目推荐之「网络请求哪家强」

网络请求这个话题基本是所有 App 开发都会遇到的,这也难怪之前很多人留言让我写写网络请求到底该怎么选择,今天就来说说网络请求到底哪家强! 1 原则 本篇说的网络请求专指 http 请求,在选...

oschina
2016/08/05
4.2K
16

没有更多内容

加载失败,请刷新页面

加载更多

解决vim打开之后乱码的问题

在Windows中的文档,传输到Linux系统中(使用rz命令),出现乱码 root@localhost ~]# rpm -qf `which iconv` glibc-common-2.17-105.el7.x86_64 [root@localhost ~]# rpm -ihv /mnt/Packages......

寰宇01
27分钟前
1
0
aldi 2017年1月记录

../../tools/CBLAS/lib/cblas_LINUX.a ../../tools/lapack-3.4.2/liblapacke.a \../../tools/lapack-3.4.2/librefblas.a -lgfortran \../../tools/lapack-3.4.2/liblapack.a \../../......

MtrS
28分钟前
2
0
Choerodon如何进行日志收集与告警

作者:董文启 应用程序日志是由软件应用程序记录的事件文件, 它一般包含错误,信息事件和警告。一个良好的日志系统有助于快速发现问题,定位问题,同时也为业务分析起到一定的作用。 传统E...

Choerodon
40分钟前
2
0
js二维码生成插件“jquery.qrcode.min.js”

<!doctype html> <html> <head> <meta charset="utf-8" /> <title>生成二维码</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></scri......

泉天下
43分钟前
1
0
Spring AOP之同一个对象方法内部自调用导致事务失效问题

对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不...

xiaomin0322
49分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部