okhttp解析

okhttp的使用

1、OkhttpClient实例

2、通过Request.Builder构建出Request请求实例   (这之中通过add)其中get直接通过Request构建传参数,而post通过构建出RequestBody传参数(form表单FromBody)

form表单上传文件时候构建MultipartBody.Builder,而文件下载的时候与其他不同的是将获取response.body().byteStream()得到字节流就可以往本地写文件了

3、通过okhttpClient.newCall出的Call对象用来管理request请求

4、通过execute或者enqueue方法执行网络请求


Okhttp有点:

1、支持http2.0,允许链接到统一主机的接口共享统一socket进行通信,这样提高了效率

2、Gzip透明压缩减少了传输数据包的大小

3、响应缓存,避免同一个重复的网络请求

4、在http2.0下通过连接池减少请求的延迟

自动重连以及解决了SSL等问题


  • OkHttpClient.Builder

  • Request.Builder

  • FormBody.Builder

  • MultipartBody.Builder

  • Response.Builder

okhttp的Interceptors

okhttp_interceptors

Dispatcher中使用了线程池技术

 public synchronized ExecutorService executorService() {
    if (executorService == null) {
      executorService = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60, TimeUnit.SECONDS,
          new SynchronousQueue<Runnable>(), Util.threadFactory("OkHttp Dispatcher", false));
    }
    return executorService;
  }

反向代理


优点:

支持http2.0 http websocket (Android3.7中已经移除对spdy协议的支持转而大力支持http2.0),共享同一socket处理同一主机服务器请求、

支持gzip来减少网络请求数据流量

缓存响应数据来减少重复的网络请求

Okhttp的总体设计








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值