【问题标题】:How to set the whole timeout in OkHttpClient?如何在 OkHttpClient 中设置整个超时?
【发布时间】:2018-09-19 13:03:30
【问题描述】:
【问题讨论】:
标签:
java
android
okhttp3
okhttp
【解决方案1】:
我找不到任何可以为所有人设置超时的方法,您可以在文档中查看它。
http://square.github.io/okhttp/3.x/okhttp/
此外,我找不到你为什么要实现这一目标的理由。
尝试以下可能解决您的问题的解决方法。
初始化一个常量值
final int ALL_TIMEOUT = 30;
new OkHttpClient().newBuilder()
.readTimeout(ALL_TIMEOUT, TimeUnit.SECONDS)
.connectTimeout(ALL_TIMEOUT, TimeUnit.SECONDS);
.writeTimeout(ALL_TIMEOUT, TimeUnit.SECONDS);
或
创建一个包装器,它将初始化您的构建器,并为所有超时传递一个值,包装器将自行初始化所有超时并为您提供构建器对象。
【解决方案2】:
OkHttpClient.Builder builder = new OkHttpClient().newBuilder()
.readTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS);
【讨论】:
-
感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
【解决方案3】:
在我的情况下,问题在于我有一个 SSL 实现,并且我正在创建自定义 OkHttpClient,它覆盖了我的进一步实现。我在那里设置了超时,但我无法更改它。我已经忘记了它并花了很多时间来找到简单的问题。查看您自己的代码并检查是否没有其他 OkHttpClient 实现覆盖您的超时。