美文网首页
BaseVolley 4.1 更加完善的Volley请求姿势!

BaseVolley 4.1 更加完善的Volley请求姿势!

作者: kongzue | 来源:发表于2018-01-23 12:36 被阅读50次

    BaseVolley

    因为觉得每次写Volley请求太麻烦而进行的二次封装

    项目地址:https://github.com/kongzue/BaseVolley

    版本

    4.1

    修复了服务器接收参数为空的问题,主要因为JsonObjectRequest并不回调 getParams() 导致的,方便起见我们换成了StringRequest

    废弃了ErrorListener监听器,合并请求成功和错误的返回监听器为同一个新的监听器:ResponseListener,请在ResponseListener中直接判断Exception是否为空,若为空即请求成功。

    同时,在HttpRequest中提供了基础请求类BaseRequest可以直接重写其 getHeaders() 方法以实现请求头的修改。

    请注意

    1. 本封装基于:compile 'com.mcxiaoke.volley:library:1.0.19'
    2. 目录中的“CORE”为核心文件,要查看项目源代码请进入该目录即可,本目录下其他文件为演示项目工程文件。

    原因

    1. Volley的请求参数不支持连续添加,写法不够轻松简洁
    2. 我们项目主要使用Json交互,所以对请求结果默认转Json进行处理
    3. 提供统一返回监听器ResponseListener处理返回数据 //重新自定义了ErrorListener错误返回回调函数(已废除)
    4. 我们可能在加载网络数据前会调用一个例如 progressbarDialog 的加载进度对话框来表示正在加载数据,此时若将“请求成功”和“请求失败”单独放在两个回调函数中,会导致代码臃肿复杂,至少你必须在两个回调函数中都将 progressbarDialog.dismiss(); 掉,而我们使用统一返回监听器就可以避免代码臃肿的问题,更加简洁高效。

    食用方法

    //创建正在加载UI表示
    ProgressbarDialog progressbarDialog = new ProgressbarDialog(this);
    progressbarDialog.show();
    
    //Http请求范例
    HttpRequest.getInstance(me)
            //自定义请求Header头部信息(选用)
            .setHeaders(new Parameter()
                    .add("Charset", "UTF-8")
                    .add("Content-Type", "application/json")
                    .add("Accept-Encoding", "gzip,deflate")
            )
            //发送请求
            .postRequest("http://www.xxx.com/test", new Parameter()
                            .add("key1", "value1")
                            .add("key2", "value3")
                            .add("key4", "value4"),
                    new ResponseListener() {
                        @Override
                        public void onResponse(JSONObject main, Exception error) {
                            //关闭进度对话框
                            progressbarDialog.dismiss();
                            
                            //处理返回数据逻辑
                            if (error == null) {
                                //请求成功处理
                            } else {
                                //请求失败处理
                                Toast.makeText(me, "网络错误,请重试", Toast.LENGTH_SHORT);
                            }
                        }
                    });
    

    POST请求可以使用HttpRequest.getInstance(context).postRequest(...);方法;

    GET请求可以使用HttpRequest.getInstance(context).getRequest(...);方法进行。

    Parameter是有序参数,方便某些情况下对参数进行加密和校验。

    HTTPS

    1. 请将SSL证书文件放在assets目录中,例如“ssl.crt”;
    2. 以附带SSL证书名的方式创建请求:
    HttpRequest.getInstance(me,"ssl.crt")
    ...
    

    即可使用Https请求方式。

    相关文章

      网友评论

          本文标题:BaseVolley 4.1 更加完善的Volley请求姿势!

          本文链接:https://www.haomeiwen.com/subject/tvksaxtx.html