package com.jiyun.dell.xiongmaopindao.ui.tool.okhttptool; import com.google.gson.Gson; import com.jiyun.dell.xiongmaopindao.ui.App; import java.io.IOException; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Map; import java.util.Set; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by DELL zhanghuirong on 2017/11/20. */ public class OkHttpUtil implements IHttp { private static OkHttpUtil okHttpUtil; private OkHttpClient okHttpClient; private OkHttpUtil() { okHttpClient = new OkHttpClient.Builder().build(); } public static OkHttpUtil getInstance() { if (okHttpUtil == null) { synchronized (OkHttpUtil.class) { if (okHttpUtil == null) { okHttpUtil = new OkHttpUtil(); } } } return okHttpUtil; } @Override public <T> void get(String url, Map<String, String> map, final NetWorkCallBack<T> netWorkCallBack) { if (map != null && map.size() > 1) { StringBuffer sb = new StringBuffer(url); sb.append("?"); //得到key Set<String> keySet = map.keySet(); for (String key : keySet) { sb.append(key).append("=").append(map.get(key)).append("&"); } url = sb.substring(0, sb.length() - 1); } final Request request = new Request.Builder().url(url).build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { netWorkCallBack.onError((T) e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { final String string = response.body().string(); App.context.runOnUiThread(new Runnable() { @Override public void run() { Gson gson = new Gson(); Type[] types = netWorkCallBack.getClass().getGenericInterfaces(); Type[] typeArguments = ((ParameterizedType) types[0]).getActualTypeArguments(); Type typeArgument = typeArguments[0]; T o = gson.fromJson(string, typeArgument); netWorkCallBack.onSuccess(o); } }); } }); } @Override public <T> void post(String url, Map<String, String> map, NetWorkCallBack<T> netWorkCallBack) { } }
//networkCallback类
public interface NetWorkCallBack<T> { void onSuccess(T str); void onError(T e); }
//Ihttp类
public interface IHttp { <T> void get(String url, Map<String, String> map, NetWorkCallBack<T> netWorkCallBack); <T> void post(String url, Map<String, String> map, NetWorkCallBack<T> netWorkCallBack); }
OkHttp网络请求工具类

本文介绍了一个基于OkHttp实现的网络请求工具类,支持GET请求,并通过回调接口处理响应结果,利用Gson进行JSON解析。
2955

被折叠的 条评论
为什么被折叠?



