Android学习记录20171023--Volley网络框架(一)

奉天承运,领导召曰:你们几个实习生把Volley的实用方法都学透一点。so,我又重新看了一遍volley,原来就是潦草的看看怎么用就行了,这次一定要深入学习一下。
我是跟着郭霖大佬的帖子学的,这里就是做做笔记加自己的理解,不喜勿喷。
郭霖大佬的文章:
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);

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值