OkHttp 允许您像
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setConnectTimeout(connectTimeout, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(readTimeout, TimeUnit.SECONDS);
以下理解是否正确?
连接超时 - 这是与服务器创建连接之前的超时
读取超时 - 这是连接处于动态状态的时间,无论是否正在读取数据,都将超时。
基于此,在读取超时期间打开的连接会发生什么情况?OkHttp 会让服务器知道连接因超时而关闭吗?一旦出现读取超时,我想关闭与服务器的连接。我不认为 OkHttp (2.2.0) 正在发送靠近服务器的套接字。这可能与SO上的此问题有关
如果 OkHttp 给你一个响应,你负责关闭它的响应正文。最好的方法是使用 try/finally 子句。
Response response = call.execute();
try {
String line;
while ((line = response.body().source().readUtf8Line()) != null) {
System.out.println(line);
}
} finally {
response.body().close();
}
ConnectionTimeOut 是 TCP 握手发生的超时。客户端与其服务器之间的连接也是如此。
读取超时是等待读取数据的超时。如果服务器在超时内的最后一个字节之后无法发送字节,则会引发读取超时错误。
因此,您的连接将自动为您关闭。因此,您只需要执行异常处理。