1.okhttp
okhttp是一个高效的HTTP客户端,具有如下特性:
(1)支持HTTP/2和SPDY,对同一台主机的所有请求共享同一个socket。
(2)当SPDY不可用的时候,使用连接池来减少请求的延迟。
(3)透明的GZIP压缩减少下载数据大小。
(4)缓存响应避免重复的网络请求。
OKhttp在网络性能很差的情况下都能够很好的工作,它能够避免常见的网络连接问题。如果你的HTTP服务有多个IP地址,OKHttp在第一次连接失败时,会尝试其他可选的地址。这对于IPv4+IPV6以及托管在冗余数据中心的服务来说是必要的。OKHttp使用现代的TLS特性(SNI,ALPN)初始化HTTP连接,当握手失败时,会降级使用TSL1.0尝试初始化连接。
OKHttp依赖于okio,okio作为java.io和java.nio得补充,是square公司开发的一个函数库。okio使得开发者可以方便地访问,存储和处理数据。一开始作为OKHttp的一个组件存在的,我们也可以单独使用它。
2.Retrofit
确切来说,Retrofit并不是一个完整的网络请求函数库,而是将REST API转换成Java接口的一个开源函数库,它要求服务器API接口遵循REST规范,基于注解使得代码变得很简洁,retrofit默认情况下使用GSON作为JSON解析器,使用okhttp完成网络请求,三者通常配合使用。当然我们也可以将这两者替换成其他函数库。
HttpURLConnection,Apache HttpClient和okhttpf封装了底层的网络请求,而Android-async-http,volley 和Retrofit是基于前面三者的基础上二次开发而成。