`
wuhua
  • 浏览: 2111906 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Chunked transfer encoding 简单说明

    博客分类:
  • HTTP
EXT 
阅读更多

Chunked transfer encoding  在协议总是很重要的,

基本分为2部分,一部分是POST checke 一部分是down

 

下面介绍InputStream那部分

 

 

Sample

Encoded response

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked

25
This is the data in the first chunk

1A
and this is the second one
0

same as above, raw bytes in hex

0000-000F   48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d   HTTP/1.1 200 OK.
0010-001F   0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74   .Content-Type: t
0020-002F   65 78 74 2f 70 6c 61 69 6e 0d 0a 54 72 61 6e 73   ext/plain..Trans
0030-003F   66 65 72 2d 45 6e 63 6f 64 69 6e 67 3a 20 63 68   fer-Encoding: ch
0040-004F   75 6e 6b 65 64 0d 0a 0d 0a 32 35 0d 0a 54 68 69   unked....25..Thi
0050-005F   73 20 69 73 20 74 68 65 20 64 61 74 61 20 69 6e   s is the data in
0060-006F   20 74 68 65 20 66 69 72 73 74 20 63 68 75 6e 6b    the first chunk
0070-007F   0d 0a 0d 0a 31 41 0d 0a 61 6e 64 20 74 68 69 73   ....1A..and this
0080-008F   20 69 73 20 74 68 65 20 73 65 63 6f 6e 64 20 6f    is the second o
0090-009F   6e 65 0d 0a 30 0d 0a 0d 0a                        ne..0....

same as above, in Java code

public static final byte[] CHUNKED_RESPONSE;
static {		 
	StringBuilder sb = new StringBuilder();
	sb.append("HTTP/1.1 200 OK\r\n");
	sb.append("Content-Type: text/plain\r\n");
	sb.append("Transfer-Encoding: chunked\r\n\r\n");
	sb.append("25\r\n");		
	sb.append("This is the data in the first chunk\r\n"); // 37 bytes of payload
			// (conveniently consisting of ASCII characters only)
	sb.append("\r\n1A\r\n");
	sb.append("and this is the second one"); // 26 bytes of payload
			// (conveniently consisting of ASCII characters only)
	sb.append("\r\n0\r\n\r\n");
	CHUNKED_RESPONSE = sb.toString().getBytes(java.nio.charset.Charset.forName("US-ASCII"));
}


Decoded data

This is the data in the first chunk
and this is the second one

 

分享到:
评论

相关推荐

    http chunk

    从给定的代码片段来看,主要涉及的是HTTP Chunked Transfer Encoding机制在Netty框架中的实现。下面将详细解析HTTP Chunked编码以及其在Netty框架中的应用。 ### HTTP Chunked Transfer Encoding HTTP Chunked ...

    ChunkedOutputStream.rar_Bodies_chunk _chunk http_http chunk

    Chunked Transfer Encoding的工作原理是这样的:每个数据块前都会有一个包含该块大小的十六进制数字,后面跟着一个回车换行符(CRLF)。数据块的最后一个块是特殊的,它的大小为0,表示传输结束。这个机制使得服务器...

    java 使用socked接收chunck分块数据

    在HTTP协议中,"Chunked Transfer Encoding"是一种用于无固定长度内容传输的方式,它允许服务器在不知道消息主体的总大小时就开始发送数据。在Java中,处理chunked数据通常涉及到Socket编程,因为Socket是网络通信的...

    http协议进阶之Transfer-Encoding和HttpCore实现详解

    如果想知道Transfer-Encoding和Content-Length的关系,只要反过来问下自己,为什么Transfer-Encoding会有identity和chunked两种,各在什么上下文情景中要用到。 Chunked格式是Transfer-Encoding的一种实现方式,...

    boost之http请求及chunked解析

    3. 异步读取响应头,检查“Transfer-Encoding”字段确认是否使用了chunked编码。 4. 如果使用了chunked编码,开始异步读取每个chunk: - 读取十六进制的chunk大小。 - 读取chunk数据,直到达到指定的字节数。 - ...

    关于PHP 如何用 curl 读取 HTTP chunked 数据

    在HTTP协议中,`Transfer-Encoding: chunked`是一种用于分块传输编码的方式,常用于服务器无法预先知道响应体总长度的情况。这种方式将响应体分成多个块(chunks),每一块都有一个大小标识,最后以一个零长度的块...

    HTTP chunked方式传输的C语言解析示例

    1. **读取头部信息**:首先,你需要解析HTTP响应头,寻找`Transfer-Encoding: chunked`字段,这表明后续的数据将以chunked编码的形式传输。同时,也要注意`Content-Type`头,因为它定义了数据的类型。 2. **理解...

    纯C语言实现文件下载,并且打印下载文件的MD5值,支持Chunk

    本项目是使用纯C语言实现文件的下载功能,并在下载过程中计算并打印出文件的MD5值,同时支持了 Chunked Transfer Encoding(分块传输编码)。下面我们将详细探讨这些知识点。 首先,`http_down.c` 文件很可能是实现...

    HTTP协议的chunked编码

    Transfer-Encoding: chunked ``` 2. **数据块**:响应体接着是零个或多个数据块,每个块由块大小(以十六进制表示)和块数据组成。块大小后跟一个CRLF(回车换行符,即`\r\n`),然后是块数据,最后是另一个CRLF...

    Burpsuite插件之chunked-coding-converter使用方法1

    5. 在Burp Suite的历史记录中找到相关的请求,检查是否包含`Transfer-Encoding: chunked`的头部。如果有,说明chunked编码已成功应用。 6. 分析响应,确认WAF是否被成功绕过。 参考项目主页和相关文章,可以深入...

    Tomcat comet 服务器推技术

    chunked transfer encoding 则允许服务器分块发送数据,直到数据传输完毕才关闭连接。 2. **Tomcat 对 Comet 的支持**:Tomcat 自版本 5.5 起就开始支持 Comet,它提供了两种处理模型:`AsyncProcessor` 和 `...

    asp.net基于http的长连接项目

    在ASP.NET中,可以通过几种不同的方法来实现这一机制,例如HTTP Streaming、HTTP Chunked Transfer Encoding或者使用IIS的Keep-Alive特性。这些方法都可以在服务器端数据准备好时立即推送到客户端,而不需要等待用户...

    JavaScript数据推送Comet技术详解_.docx

    Comet有两种主要实现方式:HTTP Streaming和HTTP Chunked Transfer Encoding。HTTP Streaming是在HTTP响应头部设置适当的Content-Length,然后服务器持续发送数据。HTTP Chunked Transfer Encoding则不断发送分块的...

    51aspx大文件上传并显示进度和上传速率示例及组建源码

    5. **Chunked Transfer Encoding**:HTTP协议中的Chunked Transfer Encoding允许服务器和客户端处理不确定长度的响应或请求。在大文件上传中,每个文件块会被封装成一个chunk,服务器可以逐步接收并处理这些chunk。 ...

    关于上传大附件的源代码

    5. **使用Chunked Transfer Encoding**:HTTP协议允许使用Chunked Transfer Encoding,它允许服务器发送数据时无需预先知道数据的总大小,这对于大文件上传非常有用,因为文件的大小可能在上传过程中动态变化。...

    小例子:上传进度条显示

    Chunked Transfer Encoding允许服务器和客户端以分块的方式传输数据,这样即使在上传大文件时,也能及时反馈进度。对于XMLHttpRequest或Fetch API,它们提供了监听上传进度的方法,例如`onprogress`事件,可以在数据...

    flask-video-streaming-master.zip

    - 在视频流传输中,服务器可能使用Chunked Transfer Encoding发送未预先知道大小的数据,这样可以一边生成一边发送,而无需先完整生成整个视频文件。 6. **VideoJS 或其他视频播放器库** - 为了在客户端播放这些...

    mp4流化工具

    4. **Chunked Transfer Encoding**:在网络传输中,chunked transfer encoding允许服务器逐块发送数据,而不是一次性发送整个文件。这对于流化MP4文件至关重要,因为它允许客户端在接收完整个文件之前就开始播放。 ...

    http协议RFC中文版

    5. **支持多种编码方式**:如Chunked Transfer Encoding用于分块传输大文件,gzip编码用于压缩数据,提高传输效率。 综上所述,HTTP协议通过RFC文档进行标准化,其发展历程从HTTP/1.0到HTTP/1.1,逐步完善了网络...

Global site tag (gtag.js) - Google Analytics