Okhttp首次訪問介面超時的分析以及解決辦法

2021-10-17 04:08:02 字數 2051 閱讀 8047

使用postman訪問介面,第一次訪問,大概需要120ms,然後後續訪問,30ms左右,間隔一段時間訪問,也是先120ms,然後30ms,雖然第一次返回比較慢,也沒有太誇張,okhttp設定的超時時間是10s,應該不會超時,所以伺服器有問題的可能性不大

因為會超時,懷疑是okhttp設定的超時時間太短,我設定個比較大的值,60s,

.connecttimeout(60000l, timeunit.milliseconds).readtimeout(60000l, timeunit.milliseconds)
這個同樣會超時,很奇怪,因為服務端最長時間也就130ms,這個分析應該也不成立,和超時時間設定無關

因為抓包顯示,第一次訪問介面,伺服器時間返回長一些,會呼叫兩次介面,估計是okhttp的重試機制的問題,設定.retryonconnectionfailure(false)

.build();這個要把okhttp公升級到3.4.1

okhttp響應超時設定無效

測試結果,還是無效

.retryonconnectionfailure(true)//錯誤重聯

.dns(new apidns())

.build();記一次android 在ipv6訪問變慢的解決過程

android使用手機網路訪問慢,但是連線wifi訪問卻很快問題解決方案!

可惜,還是不行

因為我使用的okhttp版本比較老,可能在新的版本中解決了這些問題,所以把版本更新了,結果呢,還是不行。

android 當使用http2時okhttp2 v3.4版本網路連線超時分析

因為是網路問題,在兩台機器上,一台正常,一台有問題,所以就先判斷這兩台機器的網路,連線的是同乙個wifi,唯一的區別,是有問題的機器,wifi設定過dns,設定過**,把**和dns關掉,訪問正常

經過以上分析,確定是機器連線wifi,設定了dns的關係,因為訪問的內網,所以很有可能是dns影響。折騰了好幾天,查了無數資料,試了好幾種辦法,已經到了絕望的地步,我懷疑服務端問題的時候,還被領導鄙視,說應該讓某某某來解決。哎,好在最後解決了,煎熬,記錄一下

通過Android的okhttp介面訪問網路介面

由於業務需求,需要對已發布的系統做一些功能檢測,在前輩的指導下使用android的okhttp3介面實現了工作需要,以下是 專案使用springboot gradle 布局,首先需要在build.gradel中新增依賴 其中okhttp3用來訪問介面,gson用來轉換json成物件 string t...

針對http介面訪問超時處理

如果你參加過網際網路專案,那麼你一定知道,整個大的系統會被切成許多的子系統。子系統與子系統通過接 互。其中,通過http接 互,是非常常用的一種方式。那麼如果呼叫某個子系統的http介面超時了,該如何處理呢?下面列舉一下。假設a系統有個方法methoda,會呼叫b系統的methodb這個http介面...

php 訪問超時,php請求介面超時如何解決

http訪問 一般我們訪問http方式很多,主要是 curl,socket,file get contents 等方法。如果碰到對方伺服器一直沒有響應的時候,我們就悲劇了,很容易把整個伺服器搞死,所以在訪問http的時候也需要考慮超時的問題。curl 訪問http curl 是我們常用的一種比較靠譜...