okhttp的工作原理以及缓存机制
2017-10-13 18:38
176 查看
使用范围
OkHttp支持Android 2.3及其以上版本。 对于java JDK1.7以上。
官方英文网站
https://github.com/square/okhttp/wiki/Recipes
中文社区
http://www.cnblogs.com/ct2011/p/3997368.html
Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient。
关于HttpURLConnection和HttpClient的选择>>官方博客
尽管Google在大部分安卓版本中推荐使用HttpURLConnection,但是这个类相比HttpClient实在是太难用,太弱爆了。
OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。
优点和不足
1、优点:
透明的GZIP处理降低了下载数据的大小。
其支持HTTP/2协议,通过HTTP/2,可以让客户端中到同一服务器的所有请求共用同一个Socket连接。
API设计轻巧,基本上通过几行代码的链式调用即可获取结果。
既支持同步请求,也支持异步请求。同步请求会阻塞当前线程,异步请求不会阻塞当前线程,异步执行完成后执行 相应的回调方法。
支持SPDY, 可以合并多个到同一个主机的请,使用连接池技术减少请求的延迟(如果SPDY是可用的话) ,
SPDY协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压缩、多路复用和优先级来缩短加载时间。该协议是一种更加快速的内容传输协议。
使用GZIP压缩减少传输的数据量,缓存响应避免重复的网络请求、拦截器等等。
2、缺点
第一缺点是消息回来需要切到主线程,主线程要自己去写,第二传入调用比较复杂。
okhttp 的机制原理
一、介绍
OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,
还有透明的GZIP压缩,请求缓存等优势,其核心主要有路由、连接协议、拦截器、代理、安全性认证、连接池以
及网络适配,拦截器主要是指添加,移除或者转换请求或者回应的头部信息,总流程图如下:
基础使用:
// okhttp实现HttpPost 网络访问
//square 公司出的Http请求库;
//android 原始类 HttpUrlconnection和httpClient;
//高级用法
// 基于Http Post的文件上传(类似表单)
// 多文件和多参数同时上传
MultipartBuilder表单传入
// 大文件下载和下载进度回调
// 大文件上传和上传进度回调
// 支持session的保持
// 支持自签名网站https的访问,提供方法设置下证书就行
// 支持根据Tag取消请求
// okhttp实现HttpGet 网络访问
1.实例化:OkHttpClient;
2.获取对象 Request (Request 是okhttp中访问请求builder是一个辅助类);
3.获取对象Response ,获取call对象调用execute;
4.//获取Responsedbody对象。通过//获取Responsed对象body方法获取数据;
5.从Responsedbody对象中获取服务器返回的数据
// okhttp实现HttpPost 网络访问(json,键值对)
1.builder放入键值对
2.获取requestbody对象
3.获取request对象,将reqbodybody放入它
4.获取response对象
5.获取responsebody对象
6从response中获取服务器返回数据
OkHttp的execute的方法是同步方法,
OkHttp的enqueue的方法是异步方法,
RequestBody的数据格式都要指定Content-Type,常见的有三种:
application/x-www-form-urlencoded 数据是个普通表单
multipart/form-data 数据里有文件
application/json 数据是个json
OkHttp支持Android 2.3及其以上版本。 对于java JDK1.7以上。
官方英文网站
https://github.com/square/okhttp/wiki/Recipes
中文社区
http://www.cnblogs.com/ct2011/p/3997368.html
Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient。
关于HttpURLConnection和HttpClient的选择>>官方博客
尽管Google在大部分安卓版本中推荐使用HttpURLConnection,但是这个类相比HttpClient实在是太难用,太弱爆了。
OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。
优点和不足
1、优点:
透明的GZIP处理降低了下载数据的大小。
其支持HTTP/2协议,通过HTTP/2,可以让客户端中到同一服务器的所有请求共用同一个Socket连接。
API设计轻巧,基本上通过几行代码的链式调用即可获取结果。
既支持同步请求,也支持异步请求。同步请求会阻塞当前线程,异步请求不会阻塞当前线程,异步执行完成后执行 相应的回调方法。
支持SPDY, 可以合并多个到同一个主机的请,使用连接池技术减少请求的延迟(如果SPDY是可用的话) ,
SPDY协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压缩、多路复用和优先级来缩短加载时间。该协议是一种更加快速的内容传输协议。
使用GZIP压缩减少传输的数据量,缓存响应避免重复的网络请求、拦截器等等。
2、缺点
第一缺点是消息回来需要切到主线程,主线程要自己去写,第二传入调用比较复杂。
okhttp 的机制原理
一、介绍
OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,
还有透明的GZIP压缩,请求缓存等优势,其核心主要有路由、连接协议、拦截器、代理、安全性认证、连接池以
及网络适配,拦截器主要是指添加,移除或者转换请求或者回应的头部信息,总流程图如下:
基础使用:
// okhttp实现HttpPost 网络访问
//square 公司出的Http请求库;
//android 原始类 HttpUrlconnection和httpClient;
//高级用法
// 基于Http Post的文件上传(类似表单)
// 多文件和多参数同时上传
MultipartBuilder表单传入
// 大文件下载和下载进度回调
// 大文件上传和上传进度回调
// 支持session的保持
// 支持自签名网站https的访问,提供方法设置下证书就行
// 支持根据Tag取消请求
// okhttp实现HttpGet 网络访问
1.实例化:OkHttpClient;
2.获取对象 Request (Request 是okhttp中访问请求builder是一个辅助类);
3.获取对象Response ,获取call对象调用execute;
4.//获取Responsedbody对象。通过//获取Responsed对象body方法获取数据;
5.从Responsedbody对象中获取服务器返回的数据
// okhttp实现HttpPost 网络访问(json,键值对)
1.builder放入键值对
2.获取requestbody对象
3.获取request对象,将reqbodybody放入它
4.获取response对象
5.获取responsebody对象
6从response中获取服务器返回数据
OkHttp的execute的方法是同步方法,
OkHttp的enqueue的方法是异步方法,
RequestBody的数据格式都要指定Content-Type,常见的有三种:
application/x-www-form-urlencoded 数据是个普通表单
multipart/form-data 数据里有文件
application/json 数据是个json
相关文章推荐
- Retrofit2.0+okhttp3缓存机制以及遇到的问题
- Retrofit2.0+okhttp3缓存机制以及遇到的问题
- OKHTTP缓存机制的学习
- 以 Okhttp3源码 为例 ------ 图解 缓存机制 的原理和实现(上)
- Okhttp缓存源码分析以及自定义缓存实现
- 剖析OkHttp缓存机制
- Bitmap的高效加载以及缓存机制
- 802.11协议精读9:初探节能模式(PS mode)以及缓存机制
- SDWebImage的运行机制以及缓存大小、有效时间设置
- 关于hibernate一级,二级缓存以及事务隔离机制。
- 解析Android ListView工作原理及其缓存机制
- mybatis实现对象之间的关系(一对一、一对多、多对多)以及mybatis的缓存机制
- 以 Okhttp3源码 为例 ------ 图解 缓存机制 的原理和实现(下)
- SDWebImage的实现机制以及解决tableView卡的问题和实现图片的缓存机制
- 【Java基础】Hibernate的缓存机制以及延迟加载
- okHttp缓存机制
- Okhttp缓存源码分析以及自定义缓存实现
- Retrofit+OKHttp实现缓存以及遇到的问题
- fackbook的Fresco的Image Pipeline以及自身的缓存机制
- linux缓存机制以及清理buffer/cache/swap