android OkHttp工具类

来源:互联网 发布:淘宝靠谱的美国代购 编辑:程序博客网 时间:2024/05/18 21:47
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);}
 
原创粉丝点击