okhttp
猿诗人
想做个诗人一样的程序猿,将代码写成诗
展开
-
OkHttp3简介与使用
OkHttp是一个非常高效的Http客户端,近年来几乎所有的Android应用都会使用它作为网络访问的框架。它有以下几个重要的特点:支持HTTP/2;支持连接复用;内部维护连接池;支持GZIP压缩,节省流量;维护缓存,提高响应效率;支持自动重连;等等同步GET请求String url = "http://wwww.baidu.com";OkHtt...原创 2019-04-18 20:04:53 · 882 阅读 · 0 评论 -
OkHttp3源码解析--拦截器链
前面说到的同步请求RealCall和异步请求AsyncCall,在执行execute方法时都会执行下面一句:Response response = getResponseWithInterceptorChain();这一句就是调用了拦截器链,执行了一系列操作,完成了请求访问,并将结果返回。RealCall#getResponseWithInterceptorChain代码块Java...原创 2019-04-18 20:08:00 · 210 阅读 · 0 评论 -
OkHttp3源码解析--拦截器RetryAndFollowUpInterceptor
看一下OkHttp内置的第一个拦截器RetryAndFollowUpInterceptor:RetryAndFollowUpInterceptorpublic final class RetryAndFollowUpInterceptor implements Interceptor { private static final int MAX_FOLLOW_UPS = 20; //...原创 2019-04-18 20:06:30 · 299 阅读 · 0 评论 -
OkHttp3源码解析--拦截器ConnectInterceptor-相关类
经过上面的缓存拦截器,如果没有获取到可用的缓存,还是需要建立Socket连接。为当前请求找到合适的连接,可能复用已有连接也可能是重新创建的连接。接下来就看一下ConnectInterceptor:ConnectInterceptorpublic final class ConnectInterceptor implements Interceptor { public final Ok...原创 2019-04-18 20:06:20 · 187 阅读 · 0 评论 -
OkHttp3源码解析--拦截器ConnectInterceptor-处理流程
依旧再看一下ConnectInterceptor的intercept方法:public final class ConnectInterceptor implements Interceptor { public final OkHttpClient client;//已经创建的OkHttpClient对象 //构造器中传入OkHttpClient对象 public ConnectI...原创 2019-04-18 20:06:10 · 366 阅读 · 0 评论 -
OkHttp3源码解析--OkHttpClient和Request创建过程
OkHttp3的分析过程将以以下代码调用过程进行://步骤1:创建OkHttpClient对象OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build();//步骤2:创建Request对象Request request = new Request.Builde...原创 2019-04-18 20:06:02 · 1723 阅读 · 0 评论 -
OkHttp3源码解析--拦截器CallServerInterceptor
这是做后一个拦截器,ConnectInterceptor已经连接到服务器了,接下来我们就是写入请求数据以及读出返回数据了:写入请求头写入请求体读取响应头读取响应体看一下代码:/** This is the last interceptor in the chain. It makes a network call to the server. */public f...原创 2019-04-18 20:05:53 · 257 阅读 · 0 评论 -
OkHttp3源码解析--拦截器CacheInterceptor
CacheInterceptor顾名思义,它是和缓存的管理和获取相关的:从缓存中匹配Request的请求响应结果,根据缓存策略,如果能找到可用的缓存,直接返回;将服务器返回的请求结果,写入到缓存中;更新现有缓存;设置缓存//缓存文件夹File cacheFile = new File(getExternalCacheDir().toString(),"cache");...原创 2019-04-18 20:05:43 · 177 阅读 · 0 评论 -
OkHttp3源码解析--拦截器BridgeInterceptor
桥拦截器的作用有:负责把用户构造的请求转换为发送给服务器的请求,把服务器返回的响应转换为对用户友好的响应;转换的过程就是添加一些服务端需要的header信息;在Request阶段配置用户信息,并添加一些请求头。在Response阶段,进行gzip解压。将我们创建的请求对象转成网络访问需要的请求对象,其实就是添加一些头部;然后,将网络访问对象传递出去;最后,将网络...原创 2019-04-18 20:05:33 · 154 阅读 · 0 评论 -
OkHttp3源码解析--Call异步请求
来看一下异步请求的源码流程,先看一下异步请求使用流程://步骤1:创建OkHttpClient对象OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build();//步骤2:创建Request对象Request request = new Request.Buil...原创 2019-04-18 20:05:22 · 664 阅读 · 0 评论 -
OkHttp3源码解析--Call同步请求
前面创建了Call对象,接下来就是执行。执行又分为了同步执行和异步执行,先看同步执行过程。还是之前的过程://步骤1:创建OkHttpClient对象OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build();//步骤2:创建Request对象Request...原创 2019-04-18 20:05:13 · 634 阅读 · 0 评论 -
OkHttp3源码解析--Call创建过程
再来看之前的过程://步骤1:创建OkHttpClient对象OkHttpClient client = new OkHttpClient.Builder() .readTimeout(5, TimeUnit.SECONDS) .build();//步骤2:创建Request对象Request request = new Request.Builder() .url("ht...原创 2019-04-18 20:05:02 · 330 阅读 · 0 评论 -
OkHttp3源码解析--设计模式
来看一下OkHttp3使用到的编码中的设计模式:构造者模式;工厂模式;观察者模式;单例模式;策略模式;责任链模式;享元模式;分辨说一下这些设计模式运用。构造者模式这个设计模式运用的太多了,如OkHttpClient、Request、Response、MultipartBody、HttpUrl等都是用了构造者模式,如下:public class ...原创 2019-04-18 20:08:25 · 926 阅读 · 0 评论