http response 的 content-length 字段

一般情况下不需要为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 

呵呵,一般这种很少遇到,最近碰到了,所以记录一下。

你可能感兴趣的:(浏览器,IE)