Transfer-Encoding: chunked 的含义

本文详细解读了HTTP响应头中的'Transfer-Encoding:chunked'标识符的含义及其工作原理,通过使用Java Socket进行HTTP请求,展示了其在实际应用中的表现,并附上相关代码和输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Transfer-Encoding: chunked 的含义


在用firebug查看服务器的请求时,返回的header都有Transfer-Encoding: chunked,在做实际应用时,好像也

没有多大关系。

试试用socket连接http服务器,看看数据是如何传输的。

Java代码  收藏代码
  1. Socket s =  new  Socket( "172.16.1.123"80 );  
  2. InputStream ins = s.getInputStream();  
  3. OutputStream os = s.getOutputStream();  
  4. os.write("GET /a.jsp HTTP/1.1\r\n" .getBytes());  
  5. os.write("Host:172.16.1.123\r\n" .getBytes());  
  6. //必须加host,否则服务器会返回bad request,无论是tomcat还是resin,还是nginx或者apache httpd   
  7. os.write("\r\n\r\n" .getBytes()); //这个也必不可少,http协议规定的   
  8. os.flush();  
  9. BufferedReader br = new  BufferedReader( new  InputStreamReader(ins));  
  10. String line = null ;  
  11. line = br.readLine();  
  12. while (line !=  null ){  
  13.     System.out.println(line);  
  14.     line = br.readLine();  
  15. }  
  16. ins.close();  



用tomcat做服务器,建立一个a.jsp文件

Java代码  收藏代码
  1. <%      out.print( "helloworld!" );  
  2.     out.flush();  
  3.     out.print("123" );  
  4.     out.flush();  
  5. %>  


输出结果是:

引用

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=8A7461DDA53B4C4DD0E89D73219CB5F8; Path=/
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Wed, 10 Nov 2010 07:10:05 GMT

b
helloworld!
3
123
0



其中Transfer-Encoding:chunked表示内容长度在后面介绍,b这个16进制数字就表示长度为11,然后是内容

(helloworld!),然后以\r\n结束,如果有下一段,则一个16进制数字表示长度,直到最后一段没有了,才以0

结束。

不过不用担心,在浏览器里会自动解释分析,不会让你看到b,3,0,就算在firebug里也显示的是helloworld!

123。

如果自己解析,就需要注意了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值