封装OKHttp

来源:互联网 发布:服装面料软件 编辑:程序博客网 时间:2024/06/08 00:03
自定义接口CallBack
public interface CallBack {    void onSuccess(Object o);    void onFailed(Exception e);}

封装OKHttp

public class OKHttpUtils {    private static volatile OKHttpUtils instance;    private  Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);        }    };    private OKHttpUtils(){    }    public static OKHttpUtils getInstance(){        if (instance==null){            synchronized (OKHttpUtils.class){                if (instance==null){                    instance=new OKHttpUtils();                }            }        }        return instance;    }    public void get(String url, final CallBack callBa, final Class c){        //创建OKHttpClient对象        OkHttpClient client = new OkHttpClient();        //创建Request对象        Request request = new Request.Builder()                .get()                .url(url)                .build();            //创建call对象        Call call = client.newCall(request);        call.enqueue(new okhttp3.Callback() {            @Override            public void onFailure(Call call, final IOException e) {                handler.post(new Runnable() {                    @Override                    public void run() {                        callBa.onFailed(e);                    }                });            }            @Override            public void onResponse(Call call, Response response) throws IOException {                String result = response.body().string();                //拿到数据解析                final Object o = new Gson().fromJson(result, c);                Log.e("data",result);                //当前实在子线程,回到主线程                handler.post(new Runnable() {                    @Override                    public void run() {                        //回调                        callBa.onSuccess(o);                    }                });            }        });    }}
post请求(使用拦截器)
public class OkHttpUtils {    private static volatile OkHttpUtils instance;    private static Handler handler = new Handler();    //单例模式    private void OkHttpUtils() {    }    public static OkHttpUtils getInstance() {        if (instance == null) {            synchronized (OkHttpUtils.class) {                if (instance == null) {                    instance = new OkHttpUtils();                }            }        }        return instance;    }    //post请求    public void post(String url, Map<String,String> map, final CallBack callBack, final Class c){        //1:创建OkHttpClient对象        OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new Logger()).build();        //2:提供post请求需要的body对象        FormBody.Builder builder = new FormBody.Builder();        for(Map.Entry<String,String> entry:map.entrySet()){            builder.add(entry.getKey(),entry.getValue());        }        FormBody body = builder.build();        //3:创建Request对象        final Request request = new Request.Builder()                .post(body)                .url(url)                .build();        //4:创建Call对象        Call call = okHttpClient.newCall(request);        //5:请求网络        call.enqueue(new Callback() {            //请求失败            @Override            public void onFailure(Call call, final IOException e) {                handler.post(new Runnable() {                    @Override                    public void run() {                        callBack.onFailed(e);                    }                });            }            //请求成功            @Override            public void onResponse(Call call, Response response) throws IOException {                String result = response.body().string();                //拿到数据解析                final Object o = new Gson().fromJson(result, c);                //当前是在子线程,回到主线程中                handler.post(new Runnable() {                    @Override                    public void run() {                        //回调                        callBack.onSuccess(o);                    }                });            }        });    }}


原创粉丝点击