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 

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

 

推荐阅读

 

代码之余轻松一下:当前热门-人民的名义

 

JAVAEE容器如何管理EntityManager和PersistenceContext

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值