1

我的 apache HTTP 客户端正在从向我们发送 HTTP 流(以分块数据的形式)的服务器读取数据。

我有一个输入流和缓冲读取器来获取数据,并使用缓冲数据 readLine 方法读取这些数据。

InputStream inputStream = httpEntity.getContent();
br= new BufferedReader(new InputStreamReader(inputStream));

while ((line = br.readLine()) != null) 

如果我从服务器收到错误的响应,我想关闭连接。

为此,我每隔一段时间创建一个 timertask 以关闭我的连接。每次收到响应时,我都会解析响应以检查响应是否正确,如果响应正确,则重置 timetask。如果我在这种情况下发现错误的响应,我不会重置 timertask(并让 timertask 执行到之前设置的时间)

我想知道使用无缓冲 I/O 是否有帮助?还是我需要其他方法?

我看到的问题是由于连接打开,我的 timertask 无法关闭连接。inputStream.close 或 bufferReader.close 都无法执行(似乎无限等待)

4

1 回答 1

1

BufferReader.close()只会关闭 inputStream,而 inputStream 又会调用inputStream.close(). 根据java apiInputStream.close()什么都不做。您需要关闭套接字,或者您正在抽象的任何内容httpEntity

于 2010-11-03T13:44:42.070 回答