这里写目录标题
- 一. 前言
- 二. 导入
- maven
- gradle
- 三. 设置超时时间
一. 前言
OkHttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司开发。OkHttp3是Java和Android都能用,Android还有一个著名网络库叫Volley,那个只有Android能用。
OkHttp 是一个默认高效的 HTTP 客户端:
- HTTP/2 支持允许对同一主机的所有请求共享一个套接字。
- 连接池减少了请求延迟(如果 HTTP/2 不可用)。
- 透明 GZIP 可缩小下载大小。
- 响应缓存完全避免网络重复请求。
使用 OkHttp 很容易。它的请求/响应 API 设计有流畅的构建器和不变性。它支持同步阻塞调用和带有回调的异步调用。
官方地址:https://square.github.io/okhttp
二. 导入
maven
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.6.0</version>
</dependency>
gradle
compile 'com.squareup.okhttp3:okhttp:4.6.0'
三. 设置超时时间
OkHttpClient 默认的 connectTimeout,readTimeout,writeTimeout 都是10
秒,实际在应用体验上来说,有点短的。
项目中最好 connectTimeout = 10s,readTimeout= 60s,writeTimeout = 60s,如果涉及到下载上传,实际应该修改成更长的。
在创建 OkHttpClient 客户端时设置超时时间:
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)//连接超时(单位:秒)
.readTimeout(60, TimeUnit.SECONDS)//读取超时(单位:秒)
.writeTimeout(60, TimeUnit.SECONDS)//写入超时(单位:秒)
.callTimeout(120, TimeUnit.SECONDS)//整个流程耗费的超时时间(单位:秒)--很少人使用
.pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒)
.build();
旧版本设置超时时间:
client .connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15,TimeUnit.SECONDS)
.writeTimeout(15,TimeUnit.SECONDS)
参考:
https://zhuanlan.zhihu.com/p/635599854
https://blog.csdn.net/weixin_46048515/article/details/120032790