一般情况下不需要为response 设置content-length
通过ie访问,都会计算返回内容的长度,赋值给content-length,并按此长度来显示返回的内容。
但有些浏览器可能不会自动计算,譬如STB内一些低级的浏览器,这时就需要手动计算并赋值。
如 response.setContentLength(content.length());
注意上面“并按此长度来显示返回的内容”,也就是说如果计算长度不对,将会导致显示问题;如 实际长度是300,但setContentLength(200);那就只会读取前200个长度的字符。
程序强制读取会报错,举个列子
testServlet
HttpServletResponse response = (HttpServletResponse)arg1;
String content = "i am linxh,i love you";
System.out.println(content.length());
response.setContentLength(content.length()-1);//故意少一位
response.getOutputStream().write(content.getBytes());
客户端
...
String content = "i am linxh,i love you";
byte[] buffer = new byte[content.length()];
in.readFully(buffer);
System.out.println("buufer="+new String(buffer));
此时由于返回的位数少一位,就会报 java.io.EOFException
呵呵,一般这种很少遇到,最近碰到了,所以记录一下。
推荐阅读
代码之余轻松一下:当前热门-人民的名义