作者gcobc12632 (Ted)
看板AndroidDev
标题[问题] okhttp 常常 SocketTimeoutException
时间Mon Mar 5 16:16:53 2018
目前使用的工具是 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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1520237816.A.6A5.html
1F:推 Msgbox: 如果是wifi的话 公司网路有可能因为太多人使用所以timeout 03/05 23:20
2F:→ Msgbox: ,要准确的抓问题点的话 要试4g看看才知道是不是code的问 03/05 23:20
3F:→ Msgbox: 题 03/05 23:20
4F:推 Msgbox: 或者是你用其他的外部资料 例如yahoo网页试试 也能抓看看 03/05 23:22
5F:→ Msgbox: 是不是server的问题 03/05 23:22
6F:→ y3k: 如果不是一定要等Server回来才会下一步 那就是把timeout设短 03/06 01:02
7F:→ y3k: 然後多试几次 03/06 01:02
8F:→ y3k: 会触发这麽久的timeout都是网路本身有问题 东西不知道丢去哪 03/06 01:03
9F:→ y3k: 了 你可能要跟server同步debug才能知道问题到底出在哪 03/06 01:03
用 4G 热点测试似乎没有问题…
※ 编辑: gcobc12632 (61.222.191.78), 03/06/2018 17:51:13
10F:→ ssccg: 用不同网路就没问题的话九成以上是网路问题 03/06 21:38