Day4:OKGO


依赖:implementation ‘com.lzy.net:okgo:3.0.4’//okgo依赖

一. get请求

public  void getString(){
        OkGo.<String>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1").execute(new StringCallback() {
            @Override
            public void onSuccess(Response<String> response) {
                String body = response.body();
                Toast.makeText(MainActivity.this, ""+body, Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onError(Response<String> response) {
                super.onError(response);
            }
        });

    }

二.post请求

 //post请求数据
    public  void dopost(){
        HashMap<String, String> map = new HashMap<>();
        map.put("phone","18233790750");
        map.put("passwd","345");
        OkGo.<String>post("https://www.apiopen.top/createUser?key=00d91e8e0cca2b76f515926a36db68f5&").params(map).execute(new StringCallback() {
            @Override
            public void onSuccess(Response<String> response) {
                Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
            }
        });
    }

三.下载文件显示进度条

//get下载文件
    public void getFile(){
        OkGo.<File>get("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
                .execute(new FileCallback("/sdcard/","aaaaa.mp4") {
            @Override
            public void onSuccess(Response<File> response) {
                File body = response.body();

            }

            @Override
            public void onStart(Request<File, ? extends Request> request) {
                super.onStart(request);


            }

            @Override
            public void downloadProgress(Progress progress) {
                super.downloadProgress(progress);
                //progress.fraction 获得当前上传进度 范围0-1
                bar.setProgress((int) (progress.fraction*100));
            }

            @Override
            public void onError(Response<File> response) {
                super.onError(response);
            }

            @Override
            public void onFinish() {
                super.onFinish();
            }
        });
    }

四.上传文件显示进度条

//post上传文件
    private void upload() {
        OkGo.<String>post("http://172.21.79.88/hfs/").params("file",new File("/sdcard/来自天堂的魔鬼.mp3"),"ass.mp3")
        .execute(new StringCallback(){
            @Override
            public void onSuccess(Response<String> response) {
                Toast.makeText(MainActivity.this, ""+response.body(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void uploadProgress(Progress progress) {
                super.uploadProgress(progress);
                //progress.fraction 获得当前上传进度 范围0-1
                bar.setProgress((int) (progress.fraction*100));
            }
        });
    }

五.请求图片

 //get请求图片
    public void getBitmap(){
        OkGo.<Bitmap>get("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=486958716,243120904&fm=26&gp=0.jpg").execute(new BitmapCallback() {
            @Override
            public void onSuccess(Response<Bitmap> response) {
                Bitmap bitmap = response.body();
                Toast.makeText(MainActivity.this, ""+bitmap.getByteCount(), Toast.LENGTH_SHORT).show();
            }
        });
    }

六.okGo简单的json封装

1.自定义回调接口

public abstract class JsonCallBack<T> extends AbsCallback<T> {
    private Type type;//解析数组
    private Class clazz;//解析对象
    public JsonCallBack(Type type) {
        this.type = type;
    }
    public JsonCallBack(Class t) {
        this.clazz = t;
    }
    /**
     * 该方法是子线程处理,不能做ui相关的工作
     * 主要作用是解析网络返回的 response 对象,生成onSuccess回调中需要的数据对象
     */
    @Override
    public T convertResponse(Response response) throws Throwable {
        ResponseBody body = response.body();
        if (body == null) return null;
        T data = null;
        Gson gson = new Gson();
        String string = body.string();
        if (type != null) {//解析数组
        	data = (T) gson.fromJson(string , type);
        }
        if (clazz != null) {//解析对象
        	data = gson.fromJson(string , clazz);
        }
        return data;
    }

}

2.使用

 OkGo.<Cai>get("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1")
                        .execute(new JsonCallBack<Cai>(Cai.class) {
                            @Override
                            public void onSuccess(Response<Cai> response) {
                                Cai body = response.body();
                                Log.d("cai", "onSuccess: "+body);
                            }
                        });

七.练习手册

1.题目一

1.登陆注册页面:使用OKGO做Post请求完成登陆注册功能
在这里插入图片描述

2.题目二

进入广告页面,右上角倒计时5秒,倒计时结束直接跳到主界面,实现tablayout+fragment+viewpager的切换
①对OKGO进行封装,设置读取超时和连接超时
②设置log拦截器
③设置token拦截器
④和json数据的二次封装
⑤Fragment1:使用OKGO网络请求数据展现在listview中
1)点击图片弹出对话框,提示用户是否下载图片到SD卡中
2)点击确定使用”OKGO 下载图片到SD卡中
3)长按图片判断SD卡中是否有该照片,如果有该照片使用OKGO上传图片到SD卡中
4)上传和下载的过程中显示进度条

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值