安卓开发博客Android技术知识程序员

Android OkHttp的封装类OkGo的用法

2017-10-25  本文已影响0人  侯蛋蛋_

本节前言

前面讲述了运行更快、节省流量等多个优势OkHttp,虽然他的优势特别多,但是使用起来也是比较麻烦的,就比如获取个图片都要写很长一段代码,所以今天我们就来讲一下OkGo,基于okhhttp的封装类,你会发现他真的比okhttp简单的多

关于使用

其实github库有详细的介绍,这里就讲解一下他的基本使用,介绍上一篇okhttp的功能讲解

第一步添加依赖

//必须使用
compile 'com.lzy.net:okgo:3.0.4'

//以下三个选择添加,okrx和okrx2不能同时使用
compile 'com.lzy.net:okrx:1.0.2' //Rxjava
compile 'com.lzy.net:okrx2:2.0.2'  //Rxjava2
compile 'com.lzy.net:okserver:2.0.5'//下载管理和上传管理

这里只讲解okgo的用法,其他可以看官网的详细介绍

第二步初始化

最简配置

OkGo.getInstance().init(this);

这样写是使用OkGO内部默认初始化的OkHttpClient来进行网络请求,包含了基本的log打印,超时时间和https相关的配置,但是建议还是自己配置好OkHttpClient传给OkGo比较好,详细自定义OkHttpClient的方法就是配置原生的okhttp的方法,建议的一些配置如下,都是可选的,如果需要你就加,不需要就别加了。

就需要两部,关于其他配置详细看官网介绍

okgo的基本使用

无论做什么请求,第一行的泛型一定要加!!!,ServerModel的泛型,就是上图的请求一大堆
基本请求请往下看

一、一般的get请求

 OkGo.<String>get("http://www.baidu.com")
            .execute(new StringCallback() {
                @Override
                public void onSuccess(Response<String> response) {
                    String body = response.body();
                    System.out.println(body);
                }

            });

运行结果

Response对象介绍

先看Response对象内部的字段:

该对象一共有5个字段,分别表示以下意思:

另外,该对象还有以下几个方法:

二、一般的post请求

post和get请求是一样的,只不过上面的get换成了post,这里我们就讲解一下用户的登录

get请求连接如下

http://192.168.56.1:8080/LoginServlet?username=abc&password=123

post请求连接如下

OkGo.<String>post("http://192.168.56.1:8080/LoginServle")
                .params("username","abc")
                .params("password","123")
            .execute(new StringCallback() {
                @Override
                public void onSuccess(Response<String> response) {
                    String body = response.body();
                    System.out.println(body);
                }

            });

三、文件上传

string文本

JSON文本

文件上传

四、文件下载

Paste_Image.png

五、加载图片

OkGo.getInstance().init(getApplication());
        OkGo.<Bitmap>post("http://image.uczzd.cn/7402592950813081745.jpg?id=0&from=export")
                .tag(this)
                .execute(new BitmapCallback() {
                    @Override
                    public void onSuccess(Response<Bitmap> response) {
                        Bitmap body = response.body();
                        iv.setImageBitmap(body);
                    }
                });

运行结果

上一篇 下一篇

猜你喜欢

热点阅读