1、Callback在子线程中回调,大部分时候,我们都是需要更新UI的,还需自己post到主线程中处理。 构建请求步骤比较多 因此,Square提供了针对OkHttp的封装库Retrofit,另外Github上也有很多第三方的封装库,比如OkGo。
1、OkHttp中通过建造者模式来构建OkHttpClient、Request和Response。对于客户端来讲,我们不需要过多关注Response是如何构建的,因为这个是OkHttp对响应结果进行了封装处理。我们只关注请求Request和客户端OkHttpClient如何构建即可。
2、OkHttp 性能*。 这是因为每个OkHttpClient都拥有自己的连接池和线程池,重用连接和线程可减少延迟并节省内存。 相反,为每个请求创建一个客户端会浪费空闲池上的资源。
3、okhttp是square公司贡献的一个处理网络请求的开源框架,是目前Android开发使用最广泛的一个网络框架,从Android4开始,httpURLconnection的底层实现采用的就是okhttp。内部实现就是利用java基础,对socket进行封装,实现http通信。
4、但是okhttp实现了连接池的概念,即对于同一主机的多个请求,其实可以共用一个socket连接,而不是每次发送完HTTP请求就关闭底层socket,这样就实现了连接池的概念,而okhttp对于socket的读写操作使用的OKIO库进行的一层封装。
5、接下来就可以愉快的开始使用OKhttp进行开发了。OKhttpclient通过builder构建,构建的时候涉及到很多配置项,本次简单对其中一些配置项做了说明,后续会对一些重要的配置项做专题说明。
6、总结:Transmitter是在创建RealCall的时候被创建的,其中需要了OkHttpClient和当前请求Call作为参数。所以我们知道了,一个请求对应着一个Transmitter。
在本篇文章中,我们将以ConnectIntercepter为起点,跟随网络连接获取的过程,深入探究其中涉及到的:连接查找、连接复用,网络连接的建立(三次握手、Http2协议等的处理)。
OkHttp中通过建造者模式来构建OkHttpClient、Request和Response。对于客户端来讲,我们不需要过多关注Response是如何构建的,因为这个是OkHttp对响应结果进行了封装处理。我们只关注请求Request和客户端OkHttpClient如何构建即可。
缓存拦截器顾名思义处理缓存的,但是要建立在get请求的基础上,我们可以去通过okHttpClient.cache(cache)去设置。
1、首先我们先来了解一下责任链模式,这是我们理解拦截器实现原理的前提。
2、责任链模式:有一条链子,链子上有多个节点,每个节点都有成功或失败两个结果,这样做的好处是,我们在访问服务器的时候,可以在里边进行过滤,拦截无效请求。重试拦截器、桥拦截器、缓存拦截器、连接拦截器、网络拦截器、。。
3、okHttp 默认有5个拦截器,重试重定向拦截器,桥接拦截器,缓存拦截器,连接拦截器,请求服务拦截器。工作细节参考上面拦截器原理分析部分 位置的关系,应用拦截器 放在责任链最顶端,网络拦截器放在责任链倒数第二的位置。
4、两种方式最终都是调用构造函数OkHttpClient(builder:Builder),由参数builder负责所有的参数配置工作。当您创建单个OkHttpClient实例并将其用于所有 HTTP 调用时,OkHttp 性能*。
5、也是okhttp网络请求责任链的核心模块。
6、接着看重定向 重定向总结 另附HTTP响应状态码分类:小结: RetryAndFollowUpInterceptor是整个责任链中的第一个,*接触到Request和最后接收Response的角色,它的主要功能是判断是否需要重试与重定向。
1、也是okhttp网络请求责任链的核心模块。
2、利用建造者模式构建okHttpClient实例对象,构建过程中可以动态配置参数,请求时间,响应时间,缓存信息等。 创建Request对象,设置请求方式,链接地址,参数等信息。
3、OkHttp作为当前Android端最火热的网络请求框架,必然有很多的优点。对于客户端来讲,我们关注的就是把正确的请求发送到服务端并拿到结果来进行处理。
4、OKHTTP可以配置x509trustManager,设置TLS信任证书:这块有一个坑,就是必须先要接受系统的证书,然后接受本地证书。否则访问一些链接会出现异常。
1、总结:Transmitter是在创建RealCall的时候被创建的,其中需要了OkHttpClient和当前请求Call作为参数。所以我们知道了,一个请求对应着一个Transmitter。
2、基本流程都是先创建一个OkHttpClient对象,然后通过Request.Builder()创建一个Request对象,OkHttpClient对象调用newCall()并传入Request对象就能Call对象。
3、官网地址: https://square.github.io/okhttp/ 想要详细了解HTTP/2,可以参考: https:// 接下来就可以愉快的开始使用OKhttp进行开发了。
4、第一步:创建OkHttpClient,创建OkHttpClient有两种方式:OkHttpClient提供了丰富的配置方法,例如添加拦截器、指定连接池、设置请求超时等等。
5、下载 OkHttp 介绍了这么多理论知识,接下来就进入实战阶段了,首先下载 OkHttp 的 jar 包,可以去 GitHub 下载最近的包。