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
<!-- ok http -->
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.2.2</version>
</dependency>
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)

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/310559.html
標籤:java
上一篇:前端之變(五):王者歸來
