课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
java编程开发语言的使用范围和学习人数都是非常多的一种编程开发语言,而本文我们就通过案例分析来简单了解一下,OkHttp对学习java的作用分析。
一、OkHttp拦截器的种类和作用
OkHttp的核心功能是通过拦截器来实现的,各种拦截器的作用分别为:
client.interceptors:由开发者设置的拦截器,会在所有的拦截器处理之前进行早的拦截处理,可用于添加一些公共参数,如自定义header、自定义log等等。
RetryAndFollowUpInterceptor:主要负责进行重试和重定向的处理。
BridgeInterceptor:主要负责请求和响应的转换。把用户构造的request对象转换成发送到服务器request对象,并把服务器返回的响应转换为对用户友好的响应。
CacheInterceptor:主要负责缓存的相关处理,将Http的请求结果放到到缓存中,以便在下次进行相同的请求时,直接从缓存中读取结果,提高响应速度。
ConnectInterceptor:主要负责建立连接,建立TCP连接或者TLS连接。
client.networkInterceptors:由开发者设置的拦截器,本质上和一个拦截器类似,但是由于位置不同,所以用处也不同。
CallServerInterceptor:主要负责网络数据的请求和响应,也就是实际的网络I/O操作。将请求头与请求体发送给服务器,以及解析服务器返回的response。
二、OkHttp核心执行流程
OkHttpClient:是整个OkHttp的核心管理类,从面向对象的抽象表示上来看它代表了客户端本身,是请求的调用工厂,用来发送请求和读取响应。在大多数情况下这个类应该是被共享的,因为每个Client对象持有自己的连接池和线程池。重复创建则会造成在空闲池上的资源浪费。Client对象可以通过默认的无参构造方法创建也可以通过Builder创建自定义的Client对象。Client持有的线程池和连接池资源在空闲时可以自动释放无需客户端代码手动释放,在特殊情况下也支持手动释放。
Request:一个Request对象代表了一个Http请求。它包含了请求地址url,请求方法类型method,请求头headers,请求体body等属性,该对象具有的属性普遍使用了final关键字来修饰,正如该类的说明文档中所述,当这个类的body为空或者body本身是不可变对象时,这个类是一个不可变对象。
Response:一个Response对象代表了一个Http响应。这个实例对象是一个不可变对象,只有responseBody是一个可以一次性使用的值,其他属性都是不可变的。
RealCall:一个RealCall对象代表了一个准备好执行的请求调用。它只能被执行一次。同时负责了调度和责任链组织的两大重任。
Dispatcher:调度器。它决定了异步调用何时被执行,内部使用ExecutorService调度执行,支持自定义Executor。
EventListener:事件监听器。抽象类EventListener定义了在一个请求生命周期中记录各种事件的方法,通过监听各种事件,可以用来捕获应用程序HTTP请求的执行指标。从而监控HTTP调用的频率和性能。
Interceptor:拦截器。对应了软件设计模式中的拦截器模式,拦截器可用于改变、增强软件的常规处理流程,该模式的核心特征是对软件系统的改变是透明的和自动的。OkHttp将整个请求的复杂逻辑拆分成多个独立的拦截器实现,通过责任链的设计模式将它们串联到一起,完成发送请求获取响应结果的过程。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。