OkHttp允许您设置连接超时,如下所示
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setConnectTimeout(connectTimeout, TimeUnit.SECONDS);
okHttpClient.setReadTimeout(readTimeout, TimeUnit.SECONDS);下面的理解正确吗?
连接超时-这是创建与服务器的连接之前的超时时间
读取超时-这是连接在传输中的时间,无论是否正在读取数据都将超时。
基于此,在读取超时期间,打开的连接会发生什么情况?OkHttp是否会让服务器知道连接因超时而关闭?一旦出现读取超时,我就想关闭与服务器的连接。我不认为OkHttp (2.2.0)会将套接字发送到服务器附近。这可能与SO上的this问题有关
发布于 2016-03-15 21:52:43
如果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();
}发布于 2016-03-15 19:41:53
ConnectionTimeOut是发生TCP握手的超时时间。因此,它用于客户端与其服务器之间的连接。
ReadTimeOut是等待读取数据的超时时间。如果服务器在超时时间内未能发送最后一个字节之后的字节,则会引发读取超时错误。
因此您的连接将自动为您关闭。所以你只需要执行异常处理。
https://stackoverflow.com/questions/36009889
复制相似问题