OkGoUtils

最近項(xiàng)目中一直使用的網(wǎng)絡(luò)請(qǐng)求框架 OkGo 地址 https://github.com/jeasonlzy/okhttp-OkGo

個(gè)人用起來比較順手,針對(duì)目前項(xiàng)目遇到的一些通常請(qǐng)求做了一些封裝 (只是一些簡(jiǎn)單的分裝,如果你項(xiàng)目中用到進(jìn)度條,其實(shí)也可以重寫下 onStart 和 onFinish)

OkGoUtils 和 FastJsonUtils 這兩個(gè)工具類,可以減少一些代碼量。代碼如下:
(我基本都是使用的Stringcallback,然后再配合FastJson解析,具體情況具體處理,能滿足我絕大部分需求)

OkGoUtils.java(這邊默認(rèn)使用的是POST請(qǐng)求,其他方式自行更換)

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("數(shù)據(jù)格式異常");
                        }
                    }
                });
    }
}

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;
    }

    /**
     * 根據(jù)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"));
    }

    /**
     * 獲取錯(cuò)誤信息
     *
     * @param jsonString
     * @return
     */
    public static String getErrMsg(String jsonString) {
        return getValue(jsonString, "msg");
    }

    /**
     * 獲取對(duì)象
     *
     * @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);
    }

    /**
     * 獲取數(shù)組
     *
     * @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);
    }

    /**
     * 獲取數(shù)組
     *
     * @param jsonString
     * @param key
     * @return
     */
    public static List<String> getModelList(String jsonString, String key) {
        return parseArray(getValue(jsonString, key), String.class);
    }
}

此外還需定義一個(gè)接口

package com.example.admin.realchen;


/**
 * Author:    ChenZheng
 * Date:      2017/4/26 14:48
 * Copyrights: 408280277@qq.com
 * Description: 回調(diào)接口
 */
public interface StrCallback {

    void requestOk(String rsp);

    void requestError(String rsp, String errmsg);

}

簡(jiǎn)單的使用
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);
            }
        });

歡迎指正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,039評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,555評(píng)論 19 139
  • 今天晚上女單乒乓球半決賽,李曉霞毫無懸念地打敗福原愛順利進(jìn)入單決賽,而丁寧對(duì)韓國選手金頌伊打得相對(duì)吃力很多...
    溪呢喃閱讀 271評(píng)論 0 0
  • 挺受鼓舞的 竭盡全力 頑強(qiáng)拼搏 這不正是我現(xiàn)在缺少的嗎,總給自己太多理由去偷懶 是應(yīng)該奮斗啊 奮斗吧 少年。。。!...
    殺手不太冷閱讀 198評(píng)論 0 0

友情鏈接更多精彩內(nèi)容