Android OKhttp封装

**
implementation ‘com.github.xiaohaibin:XBanner:1.6.4’
allprojects下添加 maven { url ‘https://jitpack.io’ }
先导入依赖: implementation ‘com.squareup.okhttp3:okhttp:3.10.0’
顺便把网络权限也加上 ,以免忘记!!!

**


public class OkHttpUtils {
    // 定义常量
    private int HTTP_SUCCESS = 1000;
    private int HTTP_FAIL = 1001;
    private HttpListener mHttpListener;

    // get方法
    public OkHttpUtils get(String url) {
        doHttp(url, 0, null);
        return this;
    }

    // post方法
    public OkHttpUtils post(String url, FormBody.Builder bodyBuilder) {
        doHttp(url, 1, bodyBuilder);
        return this;
    }

    // 网络请求
    private void doHttp(String url, int type, FormBody.Builder bodyBuilder) {
        // 打印
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request request = chain.request();
                Log.i("intercept", request.url().host());
                return chain.proceed(request);
            }
        }).build();
        // 对类型进行判断,判断是get还是post
        Request.Builder builder = new Request.Builder();
        builder.url(url);
        if (type == 0) {
            builder.get();
        } else {
            builder.post(bodyBuilder.build());
        }
        Request request = builder.build();
        final Message message = Message.obtain();
        // 异步请求
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                // 失败
                message.obj = e.getMessage();
                message.what = HTTP_FAIL;
                handler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                // 成功
                message.obj = response.body().string();
                message.what = HTTP_SUCCESS;
                handler.sendMessage(message);
            }
        });
    }
    // Handler
    public Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == HTTP_SUCCESS) {
                String data = (String) msg.obj;
                mHttpListener.success(data);
            }else {
                String error = (String) msg.obj;
                mHttpListener.fail(error);
            }
        }
    };

    // 传递接口
    public void result(HttpListener mHttpListener) {
        this.mHttpListener = mHttpListener;
    }
    public interface HttpListener {
        void success(String data);
        void fail(String error);
    }
}

猜你喜欢

转载自blog.csdn.net/Ye_DaXian/article/details/88624548
今日推荐