okhttputils使用心得

本文介绍了 OkHttpUtils 的使用方法,这是一种简化 OkHttp 的工具类,支持 Get 和 Post 请求。文章详细解释了如何通过回调机制处理网络请求,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OkHttp
– okhttputils使用心得

okHttp 是一个已经封装好了的utils 类,其主要功能是简化了okHttp的使用,其次也不用像原生的okHttp一样将网络请求放在子线程(因为他的内部已经将线程封装了进去)

使用时需要在Gradle中添加如下的一句话

compile 'com.zhy:okhttputils:2.6.2'

Get和Post

//Get方法
public void getDataByOkHttpUtils_get(){
        String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";
        OkHttpUtils.get().url(url).id(100).build().execute(new MyStringCallBack());
    }
//Post方法
public void getDataByOkHttpUtils_Post(){
        String url = "http://api.m.mtime.cn/PageSubArea/TrailerList.api";
        OkHttpUtils.post().url(url).id(100).build().execute(new MyStringCallBack());
    }
private class MyStringCallBack extends StringCallback {
        @Override
        public void onBefore(okhttp3.Request request, int id) {
            //super.onBefore(request, id);
            setTitle("loading...");
        }

        @Override
        public void onAfter(int id) {
            //super.onAfter(id);
            setTitle("Sample_OkHttp");
        }

        @Override
        public void onError(Call call, Exception e, int id) {
            e.printStackTrace();
            tv_result.setText("onError:"+e.getMessage());
        }

        @Override
        public void onResponse(String response, int id) {
            tv_result.setText("onResponse"+response);
            switch (id){
                case 100:

                    Toast.makeText(MainActivity.this,"http",Toast.LENGTH_LONG).show();
                    break;
                case 101:
                    Toast.makeText(MainActivity.this,"http",Toast.LENGTH_LONG).show();
                    break;
            }
        }

        @Override
        public void inProgress(float progress, long total, int id) {
            Log.e(TAG,"inProgress:"+progress);
            mProgressBar.setProgress((int) (100*progress));
        }
    }

可以看出,使用OkHttpUtils的精髓在于他的回调,因为无论是post还是get,我们都是在回调也就是CallBack()中获得网络返回来的结果
在StringCallBack这个类中,有几个回调的方法是必须重写的

@Override
public void onError(Call call, Exception e, int id) {   }

@Override
public void onResponse(String response, int id) {          }

@Override
public void inProgress(float progress, long total, int id){          }

在这三个方法中,onResult(String response, int id)方法是返回结果的方法,response就是请求结果,onError()是错误发生时回调,inProgress()是在请求过程中的回调,他会一直返回请求的进度。
然而,回调也不仅仅局限于StringCallBack这么一个回调,还有许许多多的回调的,不同的请求就可以对应这不同的回调

 class MyCallBack extends Callback<T>{
        @Override
        public T parseNetworkResponse(okhttp3.Response response, int id) throws Exception {
            return null;
        }

        @Override
        public void onError(Call call, Exception e, int id) {

        }

        @Override
        public void onResponse(T response, int id) {

        }

在这代码中可以看出,这个CallBack需要传入不同的泛型,当你有需求接受不同的网络请求时,你就可以使用不同的泛型代表你所需的请求类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值