通过BufferedReader接收响应丢失响应结果中的换行符\n,举例如下
http预期响应:
0
SECTION
2
HEADER
9
通过BufferedReader解析代码如下
BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream(), "utf-8" ));
while ((line = in. readLine()) != null) {
result += line + "\n";
}
in.close();
结果:
0SECTION2HEADER9
结果与预期值不符,改用ByteArrayOutputStream解析代码如下
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] data = new byte[ BUFFER_SIZE];
int count = -1;
while((count = in.read(data,0, BUFFER_SIZE)) != -1)
outStream.write(data, 0, count);
in.close();
data = null;
return new String(outStream.toByteArray(),encoding); =
响应结果为预期结果
原因分析:
BufferedReader使用readLine()来读取的,意思是一行一行的来读取,读到回车符的时候,就先返回给字符串,然后再进行下一行的读取,导致响应结果中确实换行符。