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レスポンスをそのまま返したい

thenは使用しないでくださいreadLine()。これは簡単なことです。StringWriter代わりにa を使用することをお勧めします。

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 に答える