Android 08:OkHTTP

  • Post author:
  • Post category:其他

1. OkHttp有哪些优势

  1. 支持http2,对一台机器的所有请求共享同一个socket

  2. 内置连接池,支持连接复用,减少延迟

  3. 支持透明的gzip压缩响应体

  4. 通过缓存避免重复的请求

  5. 请求失败时自动重试主机的其他ip,自动重定向

  6. 丰富的API,可扩展性好

2. OkHttp使用

//1.创建OkHttpClient
OkHttpClient client = new OkHttpClient();
//2.创建Request,并填入url信息
String run(String url) throws IOException {
Request request = new Request.Builder()
    .url(url)
    .build();
//3.同步请求
Response response = client.newCall(request).execute();
//4.异步请求
client.newCall(request).enqueue(responseCallback)

3. OkHttp运用的设计模式

  1. 责任链模式(拦截器的链式调用)
  2. 策略模式(在CacheInterceptor中,在响应数据的选择中使用了策略模式,选择缓存数据还是选择网络访问。)

4. OKHttp的拦截器链

  1. 应用拦截器: 拿到的是原始请求,可以添加一些自定义header、通用参数、参数加密、网关接入等等。
  2. RetryAndFollowUpInterceptor: 处理错误重试和重定向
  3. BridgeInterceptor: 应用层和网络层的桥接拦截器,主要工作是为请求添加cookie、添加固定的header,比如Host、Content-Length、Content-Type、User-Agent等等,然后保存响应结果的cookie,如果响应使用gzip压缩过,则还需要进行解压。
  4. CacheInterceptor: 缓存拦截器,如果命中缓存则不会发起网络请求。
  5. ConnectInterceptor: 连接拦截器,内部会维护一个连接池,负责连接复用、创建连接(三次握手等等)、释放连接以及创建连接上的socket流。
  6. networkInterceptors:(网络拦截器) 用户自定义拦截器,通常用于监控网络层的数据传输。
  7. CallServerInterceptor: 请求拦截器,在前置准备工作完成后,真正发起了网络请求。

5.


版权声明:本文为qq_37442823原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。