【发布时间】:2018-03-09 19:08:08
【问题描述】:
我正在调用 BufferedReader 来获取 HTTP 响应正文(如果存在)并将其粘贴到一个长字符串变量中。有时当我尝试这样做时,有时会在下面的while 循环开始执行时收到错误java.io.IOException: stream is closed。我不明白为什么。我想确保对象不为空,并且在读入对象之前有一个响应体。
BufferedReader readBuffer = null;
if (connection.getResponseCode() >= 200 && connection.getResponseCode() <= 299) {
readBuffer = new BufferedReader(new InputStreamReader(connection.getInputStream()));
} else {
readBuffer = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
}
if(readBuffer != null) {
// Get the response body output from the server
StringBuilder calculatedOutput = new StringBuilder();
String rawOutputLine;
while ((rawOutputLine = readBuffer.readLine()) != null) {
calculatedOutput.append(rawOutputLine);
}
Logger.debug(String.format("BODY: %s", calculatedOutput.toString()));
readBuffer.close();
【问题讨论】:
-
可能连接的另一端已经关闭了 Stream。
-
如果我们能看到更多代码可能会有所帮助
标签: java stream bufferedreader