okhttp 易错误区

  • 版本说明

本文只考虑okhttp3.0.1版本HTTP1.1协议的源码实现(截止2019-3-20日,github上最新版本为3.14.0),虽然版本不同,但是对本文的主题HTTP1.1部分来说,流程变化不大。

 

  • okhttp3.0.1 key tips

1.  写超时时间writeTimeout的含义是:在writeTimeout时间内,向网络输出流中发送2k字节大小的数据失败。

2.  retryOnConnectionFailure = true含义:此值为真,并不意味着请求失败时,会无限次重试。其只在以下几种情况下重试:

    a. connectionPool连接池中有空闲的连接,当请求直接使用此连接发送数据失败时,会进行重试1次;

    b. 当服务端有多个ip地址时,会针对多个ip地址进行重试;

    c. 当有多个代理服务器时,会通过ProxySelector进行多次重试。

3.  同一时刻对同一ip的异步请求最多只能有5个,其它的请求会排队等待。

4.  连接超时时间connectionTimeOut的理解误区:

    a.在socket建立连接时,并不是一定会等待connectionTimeOut这么长时间。例如,如果手机端断开wifi、无线网络等所有网络连接时,connect会立即返回,报unreachable错误。

    b.不同厂商的连接超时时间可能是不同的,根据我的测试,小米手机的最大连接超时时间是40s,华为手机的最大连接超时时间是120s。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值