OKHttpClient封裝

注:一定要在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;
    }
}
發佈了53 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章