[爆卦]Okhttp timeout是什麼?優點缺點精華區懶人包

為什麼這篇Okhttp timeout鄉民發文收入到精華區:因為在Okhttp timeout這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者gcobc12632 (Ted)看板AndroidDev標題[問題] okhttp 常常 Soc...


目前使用的工具是 Android Studio 3.0.1、Windows 10

okhttp 的版本則是最新版 'com.squareup.okhttp3:okhttp:3.10.0'


問題如下:

我在一個 class 內寫了一支專門 call api 的 function

只要有串接 api 的需求,就會 call 這個 function

程式碼如下:



(MyTool.class)

public static JSONObject post(String url, HashMap<String, String> hashMap) {
FormBody.Builder builder = new FormBody.Builder();
if (hashMap != null && hashMap.size() > 0) {
for (String key : hashMap.keySet()) {
builder.add(key, hashMap.get(key));
}
}

Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build();

try {
OkHttpClient client = new OkHttpClient.Builder()
.writeTimeout(15, TimeUnit.SECONDS)
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
.build();
Response response = client.newCall(request).execute();
String result = response.body().string();
return new JSONObject(result);
} catch (Exception e) {
e.printStackTrace();
return new JSONObject();
}
}



call api 的範例:

final HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("test", "test");

new Thread(new Runnable() {
@Override
public void run() {
JSONObject object = MyTool.post("test url", hashMap);
}
}).start();



結果就是時常出現:

java.net.SocketTimeoutException:
failed to connect to (api url) (port 80) after 15000ms

雖然伺服器沒有很高級,但出現 Timeout 的頻率實在是太高了

搞得我很難測試…

測試的時候都是用公司的 wifi(中華電信)


不知道是不是我的 code 有哪裡有問題?

有可能會是網路問題嗎?應該不太可能刻意去擋 okhttp 的連線吧?

--
By ALi Project グランギニョル

               仏語で「操り人形」または「人形劇」を指す。
      普通は19世紀末のパリに実在した劇場「グラン・ギニョル座」を指す。

 この劇場では人形の代わりに人間が出演し,残酷でエロチックな恐怖劇を演じた。

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.222.191.78
※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1520237816.A.6A5.html
Msgbox: 如果是wifi的話 公司網路有可能因為太多人使用所以timeout 03/05 23:20
Msgbox: ,要準確的抓問題點的話 要試4g看看才知道是不是code的問 03/05 23:20
Msgbox: 題 03/05 23:20
Msgbox: 或者是你用其他的外部資料 例如yahoo網頁試試 也能抓看看 03/05 23:22
Msgbox: 是不是server的問題 03/05 23:22
y3k: 如果不是一定要等Server回來才會下一步 那就是把timeout設短 03/06 01:02
y3k: 然後多試幾次 03/06 01:02
y3k: 會觸發這麼久的timeout都是網路本身有問題 東西不知道丟去哪 03/06 01:03
y3k: 了 你可能要跟server同步debug才能知道問題到底出在哪 03/06 01:03

用 4G 熱點測試似乎沒有問題…
 
※ 編輯: gcobc12632 (61.222.191.78), 03/06/2018 17:51:13
ssccg: 用不同網路就沒問題的話九成以上是網路問題 03/06 21:38

你可能也想看看

搜尋相關網站