http Chunked

原创 2006年06月12日 16:50:00

有的时候服务器生成HTTP回应是无法确定信息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码。

在进行Chunked编码传输时,在回复消息的头部有transfer-coding并定义为Chunked,表示将用Chunked编码传输内容。

在jsmartsales中,在midlet向服务端以POST方式发送Request时,发现是以Chunked方式编码的(我的服务端不支持Chunked编码);

在去掉dos.flush();后,就不是以Chunked方式编码的了,程序正常,servlet端可以以Request.getParameter()方法取到参数了

为什么呢?

先看DataOutputStream类的javadoc

flush

public void flush()
           throws IOException
Flushes this data output stream. This forces any buffered output bytes to be written out to the stream.

The flush method of DataOuputStream calls the flush method of its underlying output stream.

 

Overrides:
flush in class FilterOutputStream
Throws:
IOException - if an I/O error occurs.
See Also:
FilterOutputStream.out, OutputStream.flush()

一篇csdn上关于flush()方法的讨论

http://community.csdn.net/Expert/topic/4800/4800968.xml?temp=.1741144

flush方法即使在缓冲区中没有满的情况下,也会将缓冲区内的内容强制写到外设,也就是所谓的刷新。flush方法不是对所有的OutputStream子类起作用,只对那些使用缓冲区的OutputStream子类有效。。。。
调用close方法,系统在关闭这个流前,也会将缓冲区的内容写到外设上。。。。
所以你在程序中要注意对flush的调用,不然可能碰到奇怪的问题。。。

这篇文章:http://www.zdnet.com.cn/developer/code/story/0,3800066897,39381759-2,00.htm说的很清楚

dos.flush(); //包含本句,在某些设被上将可能会产生不可预期的结果

调用flush ()方法的意图是发送已经写入的数据到DataOutputStream的服务器的缓冲区中。在某些电话上,这个操作工作正常,在其他的电话上,它导致HTTP请求的Transfer - Encoding被设置为" chunked ",有一些随机字符被放到请求本身的前面和后面。那又怎样处理这个问题呢?这个方法调用实际上是根本不需要的。在接下来的一行中,服务器连接打开(通过openInputStream ()),将自动输入缓冲区。因此,你最好不要调用缓冲区的flush()方法。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

用java发送Http请求,并对chunked解码的介绍

很多时候,都要去互联网上抓取一些网页的数据,目前普遍的都使用chunked的编码,如果自己通过socket去获取数据,就需要对这些数据进行解码,这里我简单介绍下如何对chunked进行编码。给出了一个...

HTTP响应Chunked编码

最近公司有个应用要为第3方系统提供接口,大概要求就是对方向我方系统发送一个XML报文,我方根据请求报文响应数据,并以XML格式进行返回.测试的时候发现一个比较诡异的问题,有时候请求响应会无故多生成一些...

http协议中content-length 以及chunked编码分析

0.序 1.http/1.1协议中与chunked编码的相关字段 1)Entity Body 2)Content-length 3)Message Length 4)content-le...

HTTP1.1中CHUNKED编码解析

HTTP1.1中CHUNKED编码解析一般HTTP通信时,会使用Content-Length头信息性来通知用户代理(通常意义上是浏览器)服务器发送的文档内容长度,该头信息定义于HTTP1.0协议RFC...

Http 响应头中Transfer-Encoding: chunked

在http 的响应头中有时会见到这样的字段:Transfer-Encoding: chunked,这是一种分段传输数据的方式。如果对此格式不了解,直接将响应体以某一编码转换成字符串,就会出现乱码。re...

http协议中content-length 以及chunked编码分析

转载请注明出处 http://blog.csdn.net/yankai0219/article/details/8269922  0.序 1.http/1.1协议中与chunked...

Http响应chunked格式分析

HTTP请求数据中加入字段数据Accept-Encoding: gzip,deflate,表示本地可以接收压缩格式的数据,而服务器在处理时就将大文件压缩再发回客户端,在接收完成后在本地对这个文件又进行...

理解HTTP协议中的"Transfer-Encoding: chunked"

最近写个http客户端的小程序,由于http是基于tcp的无消息边界保护的协议,所以接受时必须要确定接受数据的数量才能完整接收数据。传统的方式,只要先接收到Content-Length就可以通过这个长...

关于HTTP1.1中chunked编码详解

Chunked-Body(块正文)= chunk(块)               chunk-size [ chunk-extension ] \r...

模拟http请求chunked解析办法

今天在干坏事抓取别人页面(http://www.xafuda.cn/article/about.html)时候遇到一个问题,平时我们在post数据后,大不了要求提交cookie,但是今天这个测试了N遍...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)