OKHttpClient封装

该博客介绍了如何封装OKHttpUtils工具类以实现GET请求。通过单例模式获取对象,创建OkHttpClient实例,设置请求并使用回调处理响应。在主线程中,通过自定义的MyHandler和OkLoadListener接口处理成功或失败的情况,允许外部调用并监听加载结果。
注:一定要在MainActivity中调用接口回调的方法

public class OKHttpUtils {

    //单利模式,获取对象
    private static OKHttpUtils okHttpUtils = null;
    private MyHandler myhandler = new MyHandler();
    private OkLoadListener okLoadListener;

    public static OKHttpUtils getInstance() {
        if (okHttpUtils == null) {
            okHttpUtils = new OKHttpUtils();
        }
        return okHttpUtils;
    }
    //get请求
    public void OkGet(String url) {
        //创建ok对象
        OkHttpClient okHttpClient = new OkHttpClient();
        //创建请求对象
        //路径是单独写了一个类(存放路径:HttpConfig.goods_url)
        Request request = new Request.Builder().url(HttpConfig.goods_url).build();
        //创建请求队列
        Call call = okHttpClient.newCall(request);
        //执行,异步请求
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Message message = myhandler.obtainMessage();
                message.what = 0;
                message.obj = e.getMessage();
                myhandler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Message message = myhandler.obtainMessage();
                message.what = 1;
                message.obj = response.body().string();
                myhandler.sendMessage(message);
            }
        });
    }
   //处理线程
    class MyHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
            //处理消息
            switch (msg.what) {
                //失败
                case 0:
                    String error = (String) msg.obj;
                    okLoadListener.LoadError(error);
                    break;
                //成功
                case 1:
                    String json = (String) msg.obj;
                    okLoadListener.LoadSuccess(json);
                    break;
            }
        }
    }

    //接口回调
//    《1》定义接口
    public interface OkLoadListener {
        void LoadSuccess(String json);

        void LoadError(String error);

    }

    //    《2》定义一个方法,共外部调用
    public void setLoadListener(OkLoadListener okLoadListener) {
        this.okLoadListener = okLoadListener;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值