美文网首页Android网络框架
Android--OKHttpUtils基本使用

Android--OKHttpUtils基本使用

作者: ZebraWei | 来源:发表于2017-11-27 00:04 被阅读52次

**版权声明:本文为小斑马伟原创文章,转载请注明出处!

OKHttpUtils:一个专注于让网络请求更简单的网络请求框架,对于任何形式的网络请求只需要一行代码。它是OKHttp的一次二次封装,封装的目的是让网络请求更加方便。

一、 OKHttpUtils优势
  • 1.性能高,使用主流的okhttp的进行封装
    OKHttp我们知道它支持http2和socket的重连。自动选择最好的路线,拥有自己维护socket维护的连接池。可以减少TCP的握手次数,同时它拥有队列线程池可以轻松的并发请求。
  • 2.特有的网络缓存模式
    OKHttpUtils是大多数网络框架不具备的,比如我们公司的网络老板要求不仅在有网的情况下,进行展示网络数据,在无网的情况下使用缓存数据。这时候我们使用普通网络请求,就需要大量的判断。当前是否有网和无网状态,根据不同的状态保存不同的数据。然后再决定是否使用缓存。但是这是一个通用的写法。于是OKHttpUtils使用自动网络缓存模式。让用户只关注数据处理。
  • 3.方便易用的扩展接口
    可以添加全局的公共参数、全局的拦截器、全局的超时时间,更可以对单个请求定制拦截器。请求参数修改等等。
  • 4.强大的Cookie的保存策略
    在客户端对Cookie的获取不是一个特别简单的事情,Cookie全程自动管理,并且提供了额外的Cookie管理方法,引入额外的自动管理中,添加任何你想创建的Cookie。
二、 OKHttpUtils引入

compile'com.lzy.net:okhttputils:1.8.1'
或者
compile'com.lzy.net:okhttputils:+'

三、OKHttpUtils配置

这个配置一般在Application,或者在基类中,用一次就可以了。
//进行全局的配置。

    OkHttpUtils.init(this);
  • 1.GET请求

    OkHttpUtils.get("www.baidu.com")  //请求方法和请求url
     .tag(this)                //请求的tag 主要用于取消对应的请求
     .cacheKey("cacheKey")     //设置当前请求的缓存key,建议每个不同功能的请求设置一个
     .cacheMode(CacheMode.DEFAULT) //缓存模式,详细请看缓存介绍
     .execute(new MyCallback() {
           @Override
           public void onSuccess(RequestInfo requestInfo,Call call, Response response) {
                //请求成功
           }
      });
    
  • 2.POST请求-上传JSON字符串

     OkHttpUtils.post("you url")
    .tag(this)
    .upJson("your json")
    .execute(new StringCallback() {
       @Override
       public void onSuccess(String s,Call call,Response response) {
             //请求成功
       }
    });
    
四、OKHttpUtils回调

AbsCallback:所有回调的父类,抽象类
StringCallBack:如果返回值类型是纯文本数据,即可使用该回调
BitmapCallback:如果请求的是图片数据,则可以使用该回调
FileCallBack:如果要做文件下载,则必须使用该回调,内部封装了文件下载进度回调等方法。

我们也可以根据自己自定义自己CallBack。

五、OKHttpUtils同步请求

OKHttpUtils同步请求 不需要传进CallBack,也就是说调了这个方法后,没有CallBack就是同步请求,传了CallBack就是异步请求。

Response response = OkHttpUtils.get("http://www.baidu.com")
     .tag(this)
     .headers("header1","111")
     .param("perams","222")
     .execute();

OkHttpUtils取消请求
//根据Tag取消请求
OkHttpUtils.getInstance().cancelTag(this); //传入相应的tag标记。

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.getBtn).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            okHttpUtilsGET();
        }
    });

    findViewById(R.id.postBtn).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            okHttpUtilsPOST();
        }
    });

    /**
     * GET请求
     */
    private void okHttpUtilsGET() {
        OkHttpUtils.get("http://www.android.com")
                .tag("get")
                .cacheKey("getCacheKey")
                .cacheMode(CacheMode.DEFAULT)
                .execute(new StringCallback() {

                    @Override
                    public void onSuccess(String s, Call call, Response response) {
                        Log.i("test","")
                    }
                });
    }

/**
 * POST请求
 */
private void okHttpUtilsPOST() {
    OkHttpUtils.post("http://www.android.com")
            .tag("get")
            .cacheKey("getCacheKey")
            .cacheMode(CacheMode.DEFAULT)
            .params("key","value")
            .params("fileName",new File(""))
            .upJson("your json")
            .execute(new StringCallback(){

                @Override
                public void onSuccess(String s, Call call, Response response) {
                    Log.i("test",s);
                }
            });
}

@Override
protected void onDestroy() {
    super.onDestroy();

    OkHttpUtils.getInstance().cancelTag("get");
    }
}

相关文章

  • Android--OKHttpUtils基本使用

    **版权声明:本文为小斑马伟原创文章,转载请注明出处! OKHttpUtils:一个专注于让网络请求更简单的网络请...

  • Flutter--Text/Container/Image

    Text基本使用 Container基本使用 Image基本使用

  • 基本使用

    1、 打开需要上传的文件夹执行: git init 格式化窗口 2、执行 git add . 上传文件 3、执行 ...

  • 基本使用

    href="javascript:;" 其中javascript: 是一个伪协议。它可以让我们通过一个链接来调用...

  • 基本使用

    数据库: 什么是数据库?简单来说就是存数据的。 都有什么是数据库? oracle(强大,跟金融政府打交道的,安全,...

  • 基本使用

    本文参考:https://morvanzhou.github.io/tutorials/machine-learn...

  • 6-xpath和css select基本使用

    Xpath基本使用 css select基本使用

  • MySQL语法入门(一)

    MySQL语法入门(一) 基本运算符使用 基本数学函数使用 基本字符串函数使用 基本日期时间函数使用

  • python time与datetime模块基本使用

    time模块基本使用 datetime模块基本使用

  • SQL语句基本使用

    SQL语句基本使用——增删改查 SQL语句基本使用——WHERE子句 SQL语句基本使用——AND和OR的使用 S...

网友评论

    本文标题:Android--OKHttpUtils基本使用

    本文链接:https://www.haomeiwen.com/subject/epzlbxtx.html