Android学习记录20171023--Volley网络框架(一)
2017-10-23 18:04
495 查看
奉天承运,领导召曰:你们几个实习生把Volley的实用方法都学透一点。so,我又重新看了一遍volley,原来就是潦草的看看怎么用就行了,这次一定要深入学习一下。
我是跟着郭霖大佬的帖子学的,这里就是做做笔记加自己的理解,不喜勿喷。
郭霖大佬的文章:
Android Volley完全解析(一),初识Volley的基本用法
进入正题:
获取jar包有三种方式:
1.网上下载,可以百度一波,如果分多可以在csdn上直接下载,或者从我这下载需要两积分,我也想设置零积分,可是没有这个选项啊。
(没上传成功。。。放一个郭霖大神的下载链接)
http://download.csdn.net/download/sinyu890807/7152015
2.可以到我的项目里面直接拷出来用,简单粗暴
项目里面有这个包,自行获取
https://github.com/Lixinyu00/RecyclerView_ImageDemo
3.clone官方的项目自己导出jar包,具体方法自行百度
1.创建一个RequestQueue请求队列
2.创建一个StringRequest对象
3.将request对象添加到队列中
上代码:
第一步:创建队列
根据郭霖大佬说的,这个队列可以缓存所有的HTTP请求,而且非常适合高并发(我也不知道咋设计的,想知道的话再查吧),我们只需要在Activity中创建一个队列就可以了。
第二部:创建请求对象
没错,这步我们获得的是一个request对象,需要传入三个参数第一个是url地址,第二个是响应成功的回调监听,第三个是响应失败的回调监听。
第三步:
将request对象添加到队列中
至此,我们的字符串的请求就完成了,可谓是相当简单。
运行结果图:
StringRequest构造方法方法有两个:
显然,我们实现的的是第二个构造方法,他是默认以get方式做请求的,如果我们想通过post方式做交互的话,就需要第一个构造方法了,就像这样:
Method.POST就是指定请求方式为Post。
以下这段是抄写的,因为现在也不怎么用POST了,而且我也不知道去哪请求post类型的,就先不研究了所以也没写代码实现。
可是这只是指定了HTTP请求方式是POST,那么我们要提交给服务器的参数又该怎么设置呢?很遗憾,StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取POST参数,那么解决方法自然也就有了,我们只需要在StringRequest的匿名类中重写getParams()方法,在这里设置POST参数就可以了,代码如下所示:
具体使用方法呢也跟StringRequest差不多,也是三步走,在这我就先放个JsonObjectRequest的代码了。
第一步:创建队列(同上)
第二步:创建一个JsonObjectRequest对象,参数为url,jsonobject(post时添加参数),响应成功回调监听,响应失败回调监听
第三步:
将request对象添加到队列中
未完待续。。。
我是跟着郭霖大佬的帖子学的,这里就是做做笔记加自己的理解,不喜勿喷。
郭霖大佬的文章:
Android Volley完全解析(一),初识Volley的基本用法
进入正题:
一、Volley简介
主要内容就是Volley封装了各种网络请求,我们只需要调用一些简单的方法就能实现网络通信。volley比较适合进行数据量不大,通信频繁的网络操作,对于大数据量的网络操作性能不佳,比如文件下载(划重点,这里会出一道送命题!)二、下载Volley
很尴尬,郭霖大神的下载需要8个积分,我很穷下载不起,只好另辟蹊径,在别的项目里面拷了一个出来(是不是很机智),其实我也在网上下载了一个不过没用过,看里面的文件是差不多的,我就都放在网上可以下载使用一下。获取jar包有三种方式:
1.网上下载,可以百度一波,如果分多可以在csdn上直接下载,或者从我这下载需要两积分,我也想设置零积分,可是没有这个选项啊。
(没上传成功。。。放一个郭霖大神的下载链接)
http://download.csdn.net/download/sinyu890807/7152015
2.可以到我的项目里面直接拷出来用,简单粗暴
项目里面有这个包,自行获取
https://github.com/Lixinyu00/RecyclerView_ImageDemo
3.clone官方的项目自己导出jar包,具体方法自行百度
三、StringRequest
使用三步走:1.创建一个RequestQueue请求队列
2.创建一个StringRequest对象
3.将request对象添加到队列中
上代码:
第一步:创建队列
RequestQueue requestQueue = Volley.newRequestQueue(this);
根据郭霖大佬说的,这个队列可以缓存所有的HTTP请求,而且非常适合高并发(我也不知道咋设计的,想知道的话再查吧),我们只需要在Activity中创建一个队列就可以了。
第二部:创建请求对象
StringRequest stringRequest = new StringRequest("https://www.baidu.com", new Response.Listener<String>() { @Override public void onResponse(String s) { textView.setText(s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Log.e(this.toString(), "onErrorResponse: ",volleyError ); } });
没错,这步我们获得的是一个request对象,需要传入三个参数第一个是url地址,第二个是响应成功的回调监听,第三个是响应失败的回调监听。
第三步:
将request对象添加到队列中
requestQueue.add(stringRequest);
至此,我们的字符串的请求就完成了,可谓是相当简单。
运行结果图:
StringRequest构造方法方法有两个:
public StringRequest(int method, String url, Listener<String> listener, ErrorListener errorListener) { super(method, url, errorListener); this.mListener = listener; } public StringRequest(String url, Listener<String> listener, ErrorListener errorListener) { this(0, url, listener, errorListener); }
显然,我们实现的的是第二个构造方法,他是默认以get方式做请求的,如果我们想通过post方式做交互的话,就需要第一个构造方法了,就像这样:
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener);
Method.POST就是指定请求方式为Post。
以下这段是抄写的,因为现在也不怎么用POST了,而且我也不知道去哪请求post类型的,就先不研究了所以也没写代码实现。
可是这只是指定了HTTP请求方式是POST,那么我们要提交给服务器的参数又该怎么设置呢?很遗憾,StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取POST参数,那么解决方法自然也就有了,我们只需要在StringRequest的匿名类中重写getParams()方法,在这里设置POST参数就可以了,代码如下所示:
StringRequest stringRequest = new StringRequest(Method.POST, url, listener, errorListener) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("params1", "value1"); map.put("params2", "value2"); return map; } };
JsonRequest
JsonRequest是个抽象类,所以我们用的时候用的都是它的子类,JsonObjectRequest和JsonArrayRequest,一个是用来请求jsonobject字段的,一个是用来请求json数组的。具体使用方法呢也跟StringRequest差不多,也是三步走,在这我就先放个JsonObjectRequest的代码了。
第一步:创建队列(同上)
第二步:创建一个JsonObjectRequest对象,参数为url,jsonobject(post时添加参数),响应成功回调监听,响应失败回调监听
sonObjectRequest jsonRequest=new JsonObjectRequest("http://gank.io/api/data/%E7%A6%8F%E5%88%A9/10/1", null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jsonObject) { textView.setText(jsonObject.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Log.e(this.toString(), "onErrorResponse: ",volleyError ); } });
第三步:
将request对象添加到队列中
requestQueue.add(stringRequest);
未完待续。。。
相关文章推荐
- Android学习记录之Volley网络通信框架基础解析(1)
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比
- android网络框架volley学习之Volley类
- Android网络框架volley学习(九)请求结果Response<T>简析
- Android学习记录之Volley框架JSONObjectRequest
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比
- android网络框架volley学习之HttpStack接口
- Android网络框架volley学习(八)缓存Cache简析
- Android 网络通信框架Volley学习
- android网络框架volley学习之RequestQueue类
- Android网络框架volley学习(十一)volley源码解析总结
- Android网络框架volley学习(十)分发结果ResponseDelivery简析
- android Volley网络通信框架学习
- 关于android Volley网络通信框架的学习
- Android网络框架volley学习(六)调度器CacheDispatcher简析
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比 标签: androidVolleyOkhttpRetrofit网络请求框架
- android学习之volley框架(网络)
- Android网络通信框架Volley的学习笔记
- Android网络框架volley学习(五)请求队列RequestQueue简析
- Android网络框架volley学习(一)基本用法