1

以下代码使用 BufferedReader 从 HTTP 响应流中读取:

final StringBuilder responseBuilder = new StringBuilder();
String line = bufferedReader.readLine();
while (line != null) {
    responseBuilder.append(line);
    responseBuilder.append('\n');
    line = bufferedReader.readLine();
}
response = responseBuilder.toString();

但是附加'\n'到每一行似乎有点缺陷。我想完全按原样返回 HTTP 响应,那么如果它在最后一行之后没有返回字符怎么办?无论如何都会使用上面的代码添加一个 - 有没有更好的方法?

4

1 回答 1

3

我想按原样返回 HTTP 响应

那就不要使用readLine()了——就这么简单。我建议使用 aStringWriter代替:

StringWriter writer = new StringWriter();
char[] buffer = new char[8192];
int charsRead;
while ((charsRead = bufferedReader.read(buffer)) > 0) {
    writer.write(buffer, 0, charsRead);
}
response = writer.toString();

请注意,如果编码错误,即使这样也不起作用。要保留准确的HTTP 响应,您需要将其作为二进制流读取(和写入)。

于 2013-03-14T10:29:28.263 回答