企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## HttpClient与HttpUrlConnection的区别 推荐而HttpUrlConnection,不推荐HttpClient 共同点:都支持Https协议,都是以流的形式进行上传或者下载数据,也可以说是以流的形式进行数据的传输,还有ipv6,以及连接池等功能。 HttpClient这个拥有非常多的API,所以如果想要进行扩展的话,并且不破坏它的兼容性的话,很难进行扩展,也就是这个原因,Google在Android6.0的时候,直接就弃用了这个HttpClient. HttpUrlConnection相对来说就是比较轻量级了,API比较少,容易扩展,并且能够满足Android大部分的数据传输。 volley,在2.3版本以前都是使用HttpClient,在2.3以后就使用了HttpUrlConnection ## Volley VS Okhttp VS Retrofit Volley: 优点:封装的更好,扩展性很强 缺点:不支持post大数据,所以不适合上传文件。 用处:频繁的、数据量小的网络请求 Okhttp: OkHttp的优势在于性能更高,因为 OkHttp基于NIO(非堵塞式)和Okio ,所以性能上要比 Volley更快。 Retrofit: 基于 OkHttp 而做的封装,解耦的更彻底 ## OKHttp 整体设计 OKHttp3通过拦截链的设计,让请求分成5个拦截器去处理,拦截器各司其职,扩展性非常高。拦截链是从自定义的拦截器开始,然后再到默认的5个拦截器。一般情况下我们想打印网络请求日志,所以可以自定义Log拦截器,如果要给所有请求添加Header,同样可以自定义Header拦截器。 ## OkHttp 5个拦截器 1.失败重试、重定向拦截器。 2.桥拦截器:主要是添加和删除一些header 3.缓存拦截器:根据缓存策略,如果缓存可用,直接返回缓存数据。 4.连接池拦截器:连接池会缓存http链接,连接池的好处是复用连接,少了3次握手,所以请求会更快 5.真正访问网络的拦截器:内部使用okio去发请求