square 开源的 http 工具类
项目地址:https://github.com/square/okhttp
文档介绍:http://square.github.io/okhttp/
介绍
HTTP/2 和 SPDY 支持允许所有用到同一个host的请求共享一个socket。
连接池减少请求延时 (如果 SPDY 不可用).
透明的GZIP支持,减少下载大小。
缓存Response以减少网络去做完全重复的请求。
OkHttp在网络有问题的时候优秀表现:
- 它会静默从常见的连接问题中恢复。
- 如果你的服有多个IP地址对应,OkHttp会在首次连接失败的时候尝试其他地址。
- OkHttp使用现代的TLS features (SNI, ALPN)) (安全传输层协议)来初始化连接, 并在握手失败的时候倒回到TLS 1.0。
OkHttp 2.0的API设计为流式builders和immutability,同时支持同步阻塞调用和异步回调。
使用 OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection一样的API。如果你使用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块。
OkHttp支持Android 2.3和以上,对Java要求至少1.7。
对了,OkHttp还用了Okio来做快速I/O和可调整大小的buffer。
SPDY
SPDY协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压缩、多路复用和优先级来缩短加载时间。该协议是一种更加快速的内容传输协议。
TSL:
安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
特点:
(1) 支持 SPDY(http://zh.wikipedia.org/wiki/SPDY)协议。SPDY 协议是 Google 开发的基于传输控制协议的应用层协议,通过压缩,多路复用(一个 TCP 链接传送网页和图片等资源)和优先级来缩短加载时间。
(2) 如果 SPDY 不可用,利用连接池减少请求延迟
(3) Gzip 压缩
(4) Response 缓存减少不必要的请求