前言
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
1
2
3
4
5
6
|
<!-- ok http --> < dependency > < artifactId >okhttp</ artifactId > < version >4.2.2</ version > </ dependency > |
gradle方式
1
|
compile 'com.squareup.okhttp3:okhttp:4.2.2' |
okhttp3方法簡介
一共可以設置5個超時時間分別如下:關于OkHttp的超時時間
1
2
3
4
5
6
7
|
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
1
2
3
4
5
|
OkHttpClient client = new OkHttpClient.Builder() .connectTimeout( 15 , TimeUnit.SECONDS) .readTimeout( 15 ,TimeUnit.SECONDS) .writeTimeout( 15 ,TimeUnit.SECONDS) .build(); |
以前的版本設置client
1
2
3
|
client .connectTimeout( 15 , TimeUnit.SECONDS) .readTimeout( 15 ,TimeUnit.SECONDS) .writeTimeout( 15 ,TimeUnit.SECONDS) |
總結
到此這篇關于SpringBoot Java后端實現okhttp3超時設置的文章就介紹到這了,更多相關Java實現okhttp3超時設置內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_46048515/article/details/120032790