首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OkHttp连接超时

OkHttp连接超时
EN

Stack Overflow用户
提问于 2016-03-15 19:23:07
回答 2查看 1.8K关注 0票数 0

OkHttp允许您设置连接超时,如下所示

代码语言:javascript
复制
    OkHttpClient okHttpClient = new OkHttpClient();
    okHttpClient.setConnectTimeout(connectTimeout, TimeUnit.SECONDS);
    okHttpClient.setReadTimeout(readTimeout, TimeUnit.SECONDS);

下面的理解正确吗?

连接超时-这是创建与服务器的连接之前的超时时间

读取超时-这是连接在传输中的时间,无论是否正在读取数据都将超时。

基于此,在读取超时期间,打开的连接会发生什么情况?OkHttp是否会让服务器知道连接因超时而关闭?一旦出现读取超时,我就想关闭与服务器的连接。我不认为OkHttp (2.2.0)会将套接字发送到服务器附近。这可能与SO上的this问题有关

EN

回答 2

Stack Overflow用户

发布于 2016-03-15 21:52:43

如果OkHttp给你一个响应,你有责任关闭它的响应体。要做到这一点,最好的方法是使用try/finally子句。

代码语言:javascript
复制
Response response = call.execute();
try {
  String line;
  while ((line = response.body().source().readUtf8Line()) != null) {
    System.out.println(line);
  }
} finally {
  response.body().close();
}
票数 2
EN

Stack Overflow用户

发布于 2016-03-15 19:41:53

ConnectionTimeOut是发生TCP握手的超时时间。因此,它用于客户端与其服务器之间的连接。

ReadTimeOut是等待读取数据的超时时间。如果服务器在超时时间内未能发送最后一个字节之后的字节,则会引发读取超时错误。

因此您的连接将自动为您关闭。所以你只需要执行异常处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36009889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档