Retrofit 設定 超時時間

2021-07-25 07:04:11 字數 1553 閱讀 9025

在**中,通過retrofit框架傳送請求去呼叫其他系統中的 rest 介面時,正常情況下,都沒有啥問題。

但是今天碰到乙個問題是,在傳送乙個請求時,過了10秒鐘之後,系統就報sockettimeout這個異常。每次報這個異常的時候都是10秒鐘的時候報的。

既然超時時間這麼有規律,那麼,肯定是在哪邊設定了超時時間。帶著這個疑問,稍微翻了一下原始碼,就找到了.

首先,我的 retrofit 物件是像下面這樣構造的

private

static

final retrofit retrofit = new retrofit.builder()

.baseurl("")

.addconverte***ctory(gsonconverte***ctory.create())

.build();

build()方法中,有如下的**

public retrofit build() 

......

}

看到了關鍵的地方:new okhttpclient()

public

okhttpclient()

builder()如下

public

builder()

看到了吧,一直有三個超時設定:connecttimeoutreadtimeoutwritetimeout,都是10秒,與我們上面的現象是吻合的。

現在已經找到了原因了,那麼,要如何來修改這幾個超時時間呢?其實很簡單:

.build();即,提前將okhttpclient物件建立好,並為其設定超時時間。

ok,一切解決!!!

參考鏈結

timeout for retrofit

設定ssh超時時間

方法一 最近公司剛剛買了一台hyper v的vps,但是連線ssh伺服器剛剛離開一會就斷開,不得不需要反覆連線伺服器,為了使ssh伺服器可以保持足夠的連線時間,大家可以按以下方法設定 基於安全的理由,如果使用者連線到 ssh server 後閒置,ssh server 會在超過特定時間後自動終止 s...

ssh設定超時時間

ssh連線超時問題解決方案 1.修改server端的etc ssh sshd config clientaliveinterval 60 server每隔60秒傳送一次請求給client,然後client響應,從而保持連線 clientalivecountmax 3 server發出請求後,客戶端沒...

PHP curl 超時時間設定

curlopt timeout好理解,就是整個curl請求過程 http request response 的超時限制,以秒為單位,設定為0則無限制。curlopt connecttimeout比較難理解,目前確認的是,這是curl請求過程中的一小部分,因此必須要設得比curlopt timeout...