封装OKHTTP

创建工具类,工具类为单例模式:

这里解释一下,单例的是工具对象而不是okhttp对象
因为在工具类的私有构造器中,创建了okhttp对象
工具类对象只能创建一次对象(单例),自然okhttp对象也就创建一个

1.创建工具类的私有构造器,不让外部访问

    private OkHttpUtil(){

        //创建okhttp对象
        okHttpClient = new OkHttpClient.Builder() .build();
    }

2.暴露一个静态方法,让外部访问(:外部不能创建工具类对象,因为构造器是私有的不让访问)

public static OkHttpUtil getInstance(){

        //判断对象地址是否为空
        if(okHttpUtil==null){
            //锁定(监视)工具类,不让线程同步访问
            synchronized (OkHttpUtil.class){
                //判断地址是否为空
                if(okHttpUtil==null){
                    //创建自己对象,指向地址
                    okHttpUtil = new OkHttpUtil();
                }
            }
        }
        //如果对象地址不为空,就返回对象地址(说明不是第一次访问了,单例模式:只能有一个实例,永远用的都是一个实例)
        return okHttpUtil;
    }

开始封装请求方法post,get(异步)

POST

 public void Post(RequestBody requestBody, String Urlstring, Callback callback){
        Request request = new Request.Builder()
                .method("POST",requestBody) //需要传进参数,请求体对象
                .url(Urlstring)    //需要传进参数,网址
                .build();
        //得到请求对象
        Call call = okHttpClient.newCall(request);
        //异步请求开始
        call.enqueue(callback);  //需要传进参数,callback接口
    }

GET

 //封装get请求,异步
    public void get(String Urlstring,Callback callback){
        Request request = new Request.Builder()
                .url(Urlstring)
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(callback);
    }

如果okhttp的封装思想理解了,可以选择使用OKGO(原理差不多),但是封装的比较强大,也非常简单导入一个依赖可以了

猜你喜欢

转载自blog.csdn.net/weixin_43807869/article/details/85545466
今日推荐