okhttp和第三方封装好的OKHttp库-okhttp-utils

1_OKHttp简介

1.1_简介

OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,还有透明的GZIP压缩,请求缓存等优势,其核心主要有路由、连接协议、拦截器、代理、安全性认证、连接池以及网络适配,拦截器主要是指添加,移除或者转换请求或者回应的头部信息

这个库也是square开源的一个网络请求库(okhttp内部依赖okio)。现在已被Google使用在Android源码上了,可见其强大。

关于网络请求库,现在应该还有很多人在使用android-async-http。他内部使用的是HttpClient,但是Google在6.0版本里面删除了HttpClient相关API,可见这个库现在有点过时了。

 

1.2_下载地址

   http://square.github.io/okhttp/

 

1.3_OKHttp主要功能

1、联网请求文本数据
2、大文件下载
3、大文件上传
4、请求图片

 

2_原生OKHttp的Get和Post请求思路

a.get请求步骤:

1)获取client对象

2)传入url获取request对象

3)获取response对象

4)利用response对象的body().string()方法获取返回的数据内容

 

b.post请求步骤:

1)获取client对象

2)传入url获取request对象,对比get方法,其还有在获取request对象的时候加多一个post方法用于传递客户端向服务器端发送的数据。

3)获取response对象

4)利用response对象的body().string()方法获取返回的数据内容

 

3_第三方封装好的OKHttp库-okhttp-utils

1_下载并且运行案例

https://github.com/hongyangAndroid/okhttp-utils

 

2_该案例导入之后会有报错,而报错处理为:

在sample-okhttp中的build.gradle文件中

如下配置

 

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

 

 

 

3.okhttp-utils的使用步骤

1)将okhttp-utils集成到案例中

2)注释掉okhttp库和okio库,因为okhttputils库里面本身就有okhttp库和okio库

3)明确我们要用这个第三方工具用来干吗,从而使用相对应的方法。

 

4.利用okhttp-utils请求文本

a.get请求

1)自定义一个类,继承StringCallback,用于获取数据过程的提示和用于获取到的数据的处理

2)直接利用OkHttpUtils的get().url("url").id().build().execute(new 自定义类)方法获取数据,数据在自定义类中处理。注意:id是用于标记你是谁发过来的请求,也会在自定义类中进行判断。

 

b.post请求

1)自定义一个类,继承StringCallback,用于获取数据过程的提示和用于获取到的数据的处理

2)直接利用OkHttpUtils的post().url("url").id().build().execute(new 自定义类)方法获取数据,数据在自定义类中处理。

注意:如果需要传数据给服务器,就加多一个params()方法,并且传入一个变量a,该变量的形式为Map<String, String> ,我们就可以把我们要传入的数据,写入到我们的a中,然后

在传a就可以了。

 

5.利用okhttp-utils文件下载

步骤:直接调用OkHttpUtils的内置方法并且引用FileCallBack对象用于处理下载到的文件。注意:在实例化FileCallBack对象的时候会传入你要下载的路径和文件名。

注意:记得加权限

 

6.利用okhttp-utils文件上传到服务器

步骤:

1)获取文件对象,并且判断该文件存不存在

2)自定义一个类,继承StringCallback,用于监控请求服务的过程

3)直接利用OkHttpUtils的post().addFile().url("url").id().build().execute(new 自定义类)方法。

 

7.使用okhttp-utils请求图片

步骤:跟上面的差不多,重点在需要使用BitmapCallback()对象。

 

posted @ 2017-12-22 12:44  鹏达君  阅读(10740)  评论(0编辑  收藏  举报