SpringBoot|SpringBoot Java后端实现okhttp3超时设置的方法实例
目录
- 前言
- 导入
- okhttp3方法简介
- 两种版本超时设置用法
- 总结
前言
okhttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司开发。OkHttp 是一个默认高效的 HTTP 客户端。OkHttp3是Java和Android都能用,Android还有一个著名网络库叫Volley,那个只有Android能用。
okttp3的github官方地址是:官方地址
- HTTP/2 支持允许对同一主机的所有请求共享一个套接字。
- 连接池减少了请求延迟(如果 HTTP/2 不可用)。
- 透明 GZIP 可缩小下载大小。
- 响应缓存完全避免网络重复请求。
OkHttp在网络出现问题时坚持:它会从常见的连接问题中默默恢复。如果您的服务有多个 IP 地址,如果第一次连接失败,OkHttp将尝试备用地址。这对于在冗余数据中心托管的 IPv4+IPv6 和服务是必需的。OkHttp 支持现代 TLS 功能(TLS1.3、ALPN、证书锁定)。它可以配置为回退以实现广泛的连接。使用 OkHttp 很容易。它的请求/响应 API 设计有流畅的构建器和不变性。它支持同步阻塞调用和带有回调的异步调用。
导入
maven
com.squareup.okhttp3 okhttp4.2.2
gradle方式
compile 'com.squareup.okhttp3:okhttp:4.2.2'
okhttp3方法简介
一共可以设置5个超时时间分别如下:关于OkHttp的超时时间
OkHttpClient client = new OkHttpClient.Builder().connectTimeout(30, TimeUnit.SECONDS)//连接超时(单位:秒).callTimeout(120, TimeUnit.SECONDS)//整个流程耗费的超时时间(单位:秒)--很少人使用.pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒).readTimeout(60, TimeUnit.SECONDS)//读取超时(单位:秒).writeTimeout(60, TimeUnit.SECONDS)//写入超时(单位:秒).build();
api | 描述 | 生效机制 |
---|---|---|
callTimeout() | 整个流程耗费的超时时间 | AsyncTimeout + WatchDog实现 |
connectTimeout() | 三次握手 + SSL建立耗时 | socket.connect(address, connectTimeout) |
readTimeout() | source读取耗时\rawSocket读取耗时 | source.timeout(readTimeout)AsyncTimeout + WatchDog实现\rawSocket.setSoTimeout(readTimeout) |
writeTimeout() | sink写入耗时 | sink.timeout(writeTimeout)AsyncTimeout + WatchDog实现 |
pingInterval() | websocket轮训间隔(单位:秒) | 这个值只有http2和webSocket中有使用 |
两种版本超时设置用法
okhttp3要设置client.Builder
OkHttpClient client = new OkHttpClient.Builder().connectTimeout(15, TimeUnit.SECONDS).readTimeout(15,TimeUnit.SECONDS).writeTimeout(15,TimeUnit.SECONDS).build();
以前的版本设置client
client .connectTimeout(15, TimeUnit.SECONDS).readTimeout(15,TimeUnit.SECONDS).writeTimeout(15,TimeUnit.SECONDS)
总结 到此这篇关于SpringBoot Java后端实现okhttp3超时设置的文章就介绍到这了,更多相关Java实现okhttp3超时设置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Activiti(一)SpringBoot2集成Activiti6
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 事件代理
- SpringBoot调用公共模块的自定义注解失效的解决
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 解决SpringBoot引用别的模块无法注入的问题
- django-前后端交互
- java中如何实现重建二叉树
- 数组常用方法一