java - 如何使用 OkHttp 设置连接超时

标签 java timeout okhttp

我正在使用 OkHttp 库开发应用程序,我的问题是我找不到如何设置连接超时和套接字超时。

OkHttpClient client = new OkHttpClient();

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

Response response = client.newCall(request).execute();

最佳答案

OkHttp3 开始,您可以通过 Builder 执行此操作像这样

client = new OkHttpClient.Builder()
    .connectTimeout(10, TimeUnit.SECONDS)
    .writeTimeout(10, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)
    .build();

您也可以查看食谱here .

对于旧版本,您只需这样做

OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(15, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(15, TimeUnit.SECONDS);    // socket timeout

Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();

请注意 setReadTimeout 中设置的值是 OkHttp 内部 SocketsetSoTimeout 中使用的值> Connection类。

OkHttpClient 上不设置任何超时等效于在 setConnectTimeoutsetReadTimeout 上设置 0 的值> 并且根本不会导致超时。说明可见here .

正如@marceloquinta 在评论中提到的,setWriteTimeout 也可以设置。

2.5.0 版本开始,读/写/连接超时值默认设置为 10 秒,如 @ChristerNordvik 所述。这个可以看here .

关于java - 如何使用 OkHttp 设置连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25953819/

相关文章:

java - PDF-Checkbox - 在没有 JavaScript 的情况下选中一个并取消选中另一个

jvm - MuleStudio - 错误 failed 无法加载 JNI 共享库

java - JOIN 中的相同列名在 ResultSet 中出现 "column not found"错误

node.js - 如何设置 mongoose 等待 mongodb 连接的最长时间

python - 如何让 Python 代码在 telnet (telnetlib) 超时后继续

javascript:如何在短时间间隔内单击多个复选框时延迟提交数据?

java - 使用 service/dao 层模式的 Android 项目 "back-end"的最佳架构

android OkHttp 清除磁盘缓存图像条目

java - 在 py4j 中使用整个 eclipse 项目

android - Okhttp Authenticator addHeader() vs header()