最近項(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);
}
});
歡迎指正!