参考:
https://www.cnblogs.com/liqipeng/p/9148545.html
https://blog.csdn.net/qq_34861144/article/details/82453431
https://segmentfault.com/q/1010000004025209
接口通用结构
package com.laolang.km.account.base.core;
import java.util.HashMap;
import java.util.Map;
import lombok.Data;
@Data
public class SimpleAjax<T> {
public static final int CODE_SUCCESS = 200;
public static final int CODE_FAIL = 400;
public static final int CODE_OVERDUE = 400;
public static final int CODE_ERROR = 500;
public static final int CODE_FIXING = 502;
/**
* 接口请求结果的业务状态吗
*/
private Integer code;
/**
* 判断接口请求是否成功的唯一标识
*/
private Boolean success;
/**
* 提示信息
*/
private String msg;
/**
* 数据体
*/
private T body;
/**
* 扩充字段
*/
private Map<String,Object> extra = new HashMap<>();
}
数据与实体
get
接口
http://localhost:3000/blog/catsys
{
"success": true,
"code": 200,
"msg": "",
"body": {"list": [
{
"id": 1,
"name": "程序人生"
},
{
"id": 2,
"name": "编程语言"
},
{
"id": 3,
"name": "数据库"
},
{
"id": 4,
"name": "游戏开发"
},
{
"id": 5,
"name": "运维"
}
]},
"extra": {}
}
实体
package com.laolang.km.account.app.entity;
import java.util.List;
import lombok.Data;
@Data
public class BlogCatSys {
private List<ListBean> list;
@Data
public static class ListBean {
/**
* id : 1
* name : 程序人生
*/
private int id;
private String name;
}
}
post
接口
http://localhost:3000/blog/catuser
{
"success": true,
"code": 200,
"msg": "",
"body": {
"list": [
{
"id": 3,
"name": "c++",
"show": 1
}
]
},
"extra": {}
}
实体
package com.laolang.km.account.app.entity;
import java.util.List;
import lombok.Data;
@Data
public class BlogCatUser {
private List<ListBean> list;
@Data
public static class ListBean {
/**
* id : 3
* name : c++
* show : 1
*/
private int id;
private String name;
private int show;
}
}
FastJsonUtils
public static <T>SimpleAjax<T> converJsonToSimpleAJax(String json, Class<T> clazz){
return JSONObject.parseObject(json, new TypeReference<SimpleAjax<T>>(clazz){});
}
OkHttpUtil
package com.laolang.km.account.base.util;
import com.laolang.km.account.base.core.SimpleAjax;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpUtil {
private static final String LOG_TAG = "OkHttpUtil";
private static OkHttpUtil instance;
private final OkHttpClient client;
private OkHttpUtil() {
client = new OkHttpClient.Builder()
.addInterceptor(new LoggingInterceptor())
.build();
}
public static OkHttpUtil getInstance() {
if (null == instance) {
synchronized (OkHttpUtil.class) {
if (null == instance) {
instance = new OkHttpUtil();
}
}
}
return instance;
}
public String get(String url, FormBody formBody) {
Request request = new Request.Builder().url(url).method("GET", formBody).build();
Call call = client.newCall(request);
try {
Response response = call.execute();
if (response.isSuccessful()) {
if (null != response.body()) {
return response.body().string();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public String get(String url) {
Request request = new Request.Builder().url(url).build();
Call call = client.newCall(request);
try {
Response response = call.execute();
if (response.isSuccessful()) {
if (null != response.body()) {
return response.body().string();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public <T> SimpleAjax<T> getSimpleAjax(String url, Class<T> clazz) {
String json = get(url);
if (null != json && json.length() > 0) {
return FastJsonUtils.converJsonToSimpleAJax(json, clazz);
}
return null;
}
public <T> SimpleAjax<T> getSimpleAjax(String url, Class<T> clazz, FormBody formBody) {
String json = get(url, formBody);
if (null != json && json.length() > 0) {
return FastJsonUtils.converJsonToSimpleAJax(json, clazz);
}
return null;
}
public String post(String url, FormBody formBody) {
Request request = new Request.Builder().url(url).method("POST", formBody).build();
Call call = client.newCall(request);
try {
Response response = call.execute();
if (response.isSuccessful()) {
if (null != response.body()) {
return response.body().string();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public String post(String url) {
Request request = new Request.Builder().url(url).build();
Call call = client.newCall(request);
try {
Response response = call.execute();
if (response.isSuccessful()) {
if (null != response.body()) {
return response.body().string();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public <T> SimpleAjax<T> postSimpleAjax(String url, Class<T> clazz) {
String json = post(url);
if (null != json && json.length() > 0) {
return FastJsonUtils.converJsonToSimpleAJax(json, clazz);
}
return null;
}
public <T> SimpleAjax<T> postSimpleAjax(String url, Class<T> clazz, FormBody formBody) {
String json = post(url, formBody);
if (null != json && json.length() > 0) {
return FastJsonUtils.converJsonToSimpleAJax(json, clazz);
}
return null;
}
class LoggingInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
String method = request.method();
RequestBody requestBody = request.body();
Logger.d(LOG_TAG + " method:", method);
Logger.d(LOG_TAG + " requestBody:", FastJsonUtils.convertObjectToJSON(request));
Response response = chain.proceed(request);
return response;
}
}
}
测试类
package com.laolang.km.account.base.util;
import android.support.test.runner.AndroidJUnit4;
import com.laolang.km.account.app.entity.BlogCatSys;
import com.laolang.km.account.app.entity.BlogCatUser;
import com.laolang.km.account.base.core.SimpleAjax;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.IOException;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
@RunWith(AndroidJUnit4.class)
public class OkHttpUtilTest {
@Test
public void getTest(){
String url = "http://localhost:3000/blog/catsys";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
try{
Response response = client.newCall(request).execute();
String result = response.body().string();
System.out.println(result);
}catch (Exception e){
e.printStackTrace();
}
}
@Test
public void getTest2(){
String url = "http://localhost:3000/blog/catsys";
String json = OkHttpUtil.getInstance().get(url);
SimpleAjax<BlogCatSys> ajax = FastJsonUtils.converJsonToSimpleAJax(json, BlogCatSys.class);
System.out.println(ajax);
for (BlogCatSys.ListBean bean : ajax.getBody().getList()) {
System.out.println(bean);
}
}
@Test
public void postTest(){
String url = "http://localhost:3000/blog/catuser";
OkHttpClient client = new OkHttpClient();
FormBody body = new FormBody.Builder().add("id","1").build();
Request request = new Request.Builder().url(url).method("POST",body).build();
try {
Response response = client.newCall(request).execute();
String json = response.body().string();
SimpleAjax<BlogCatUser> ajax = FastJsonUtils.converJsonToSimpleAJax(json, BlogCatUser.class);
for (BlogCatUser.ListBean bean : ajax.getBody().getList()) {
System.out.println(bean);
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void postTest2(){
String url = "http://localhost:3000/blog/catuser";
SimpleAjax<BlogCatUser> ajax = OkHttpUtil.getInstance().postSimpleAjax(url, BlogCatUser.class, new FormBody.Builder().add("id", "1").build());
for (BlogCatUser.ListBean bean : ajax.getBody().getList()) {
System.out.println(bean);
}
}
}