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 {
|
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()对象。