OkGoUtils

作者: realchen7 | 来源:发表于2017-12-05 15:25 被阅读0次

    最近项目中一直使用的网络请求框架 OkGo 地址 https://github.com/jeasonlzy/okhttp-OkGo

    个人用起来比较顺手,针对目前项目遇到的一些通常请求做了一些封装 (只是一些简单的分装,如果你项目中用到进度条,其实也可以重写下 onStart 和 onFinish)

    OkGoUtils 和 FastJsonUtils 这两个工具类,可以减少一些代码量。代码如下:
    (我基本都是使用的Stringcallback,然后再配合FastJson解析,具体情况具体处理,能满足我绝大部分需求)

    OkGoUtils.java(这边默认使用的是POST请求,其他方式自行更换)

    package com.example.admin.realchen;
    
    import com.blankj.utilcode.util.ToastUtils;
    import com.lzy.okgo.OkGo;
    import com.lzy.okgo.callback.StringCallback;
    import com.lzy.okgo.model.Response;
    
    
    import java.util.HashMap;
    
    /**
     * Author:    ChenZheng
     * Date:      2017/12/05 15:11
     * Copyrights: 408280277@qq.com
     * Description: OKGo的工具类
     */
    public class OkGoUtils {
    
        public static void excute(String url, HashMap<String, String> params, final int code, final StrCallback callback) {
            OkGo.<String>post(url)
                    .isSpliceUrl(true)
                    .params(params)
                    .execute(new StringCallback() {
                        @Override
                        public void onSuccess(Response<String> response) {
                            String rsp = response.body();
                            if (FastJsonUtils.isJSon(rsp)) {
                                if (FastJsonUtils.getResult(rsp)) {
                                    callback.requestOk(rsp);
                                } else {
                                    callback.requestError(rsp, FastJsonUtils.getErrMsg(rsp));
                                }
                            } else {
                                ToastUtils.showLong("数据格式异常");
                            }
                        }
                    });
        }
    }
    

    FastJsonUtils.java

    package com.example.admin.realchen;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    import java.util.List;
    
    import static com.alibaba.fastjson.JSON.parseArray;
    import static com.alibaba.fastjson.JSON.parseObject;
    
    /**
     * Author:    ChenZheng
     * Date:      2017/4/26 14:48
     * Copyrights: 408280277@qq.com
     * Description: 封装fast常用的一些方法
     */
    public class FastJsonUtils {
    
        public static boolean isJSon(String jsonString) {
            try {
                JSONObject.parse(jsonString);
            } catch (Exception e) {
                return false;
            }
            return true;
        }
    
        /**
         * 根據key获取value
         *
         * @param jsonString
         * @param key
         * @return
         */
        public static String getValue(String jsonString, String key) {
            return JSONObject.parseObject(jsonString).getString(key);
        }
    
        /**
         * 获取data
         *
         * @param jsonString
         * @return
         */
        public static String getData(String jsonString) {
            return JSONObject.parseObject(jsonString).getString("data");
        }
    
        /**
         * 获取data
         *
         * @param jsonString
         * @return
         */
        public static String getList(String jsonString) {
            return JSONObject.parseObject(jsonString).getString("list");
        }
    
        /**
         * 获取result
         *
         * @param jsonString
         * @return
         */
        public static boolean getResult(String jsonString) {
            return "1".equals(getValue(jsonString, "result"));
        }
    
        /**
         * 获取错误信息
         *
         * @param jsonString
         * @return
         */
        public static String getErrMsg(String jsonString) {
            return getValue(jsonString, "msg");
        }
    
        /**
         * 获取对象
         *
         * @param key
         * @param className
         * @param <T>
         * @return
         */
        public static <T> T getModel(String jsonString, String key, Class<T> className) {
            return parseObject(getValue(jsonString, key), className);
        }
    
        /**
         * 获取数组
         *
         * @param jsonString
         * @param key
         * @param className
         * @param <T>
         * @return
         */
        public static <T> List<T> getModelList(String jsonString, String key, Class<T> className) {
            return JSONArray.parseArray(getValue(jsonString, key), className);
        }
    
        /**
         * 获取数组
         *
         * @param jsonString
         * @param key
         * @return
         */
        public static List<String> getModelList(String jsonString, String key) {
            return parseArray(getValue(jsonString, key), String.class);
        }
    }
    

    此外还需定义一个接口

    package com.example.admin.realchen;
    
    
    /**
     * Author:    ChenZheng
     * Date:      2017/4/26 14:48
     * Copyrights: 408280277@qq.com
     * Description: 回调接口
     */
    public interface StrCallback {
    
        void requestOk(String rsp);
    
        void requestError(String rsp, String errmsg);
    
    }
    
    

    简单的使用
    code

    HashMap<String, String> params = new HashMap<>();
            params.put("action", "UserLogin");
            params.put("username", "111");
            params.put("password", "111");
    
            OkGoUtils.excute("http://xxxxxx:8093/tools/Interface.ashx", params, 1, new StrCallback() {
                @Override
                public void requestOk(String rsp) {
                    LogUtils.d("成功");
                }
    
                @Override
                public void requestError(String rsp, String errmsg) {
                    LogUtils.d("失败" + errmsg);
                }
            });
    

    欢迎指正!

    相关文章

      网友评论

          本文标题:OkGoUtils

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