`
alex.Lin
  • 浏览: 64830 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

http response 的 content-length 字段

    博客分类:
  • java
阅读更多

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

分享到:
评论
1 楼 walkingp 2013-09-29  
呵呵呵呵呵呵呵呵呵呵呵呵

相关推荐

Global site tag (gtag.js) - Google Analytics