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

比较直观的HTTP Chunked编码介绍

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

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

基本上checked的编码方式。

分享到:
评论
1 楼 huangshazsw 2010-06-25  
WTK的模拟器发送大字段文本的时候 就是因为这个chuncked而导致服务器那边接收到的内容长度为-1。有时候这个会引起问题,不过真机上还没遇到过

相关推荐

    HTTP协议的chunked编码

    Chunked编码是HTTP协议(特别是HTTP/1.1版本)中的一种传输机制,它允许发送方将大响应体分块发送,而不是一次性发送完整个响应。这种编码方式尤其适用于那些在传输过程中大小未知或不断变化的数据流。 Chunked编码...

    对chunked编码进行解码

    一个对chunked编码进行解码的例子,通过java socket实现发送http请求,对gzip压缩的消息体进行解码处理。

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

    HTTP chunked编码是一种在HTTP协议中用于处理大文件或流式传输数据的方式。它允许服务器在不知道确切内容长度的情况下发送响应。这种方式对于那些在生成过程中才能确定大小的动态内容非常有用,例如,从数据库中实时...

    boost之http请求及chunked解析

    通过Boost.ASIO和对chunked编码的理解,你可以构建出高效的网络应用程序,能够处理各种大小的HTTP响应,无论它们是否使用了chunked编码。这个主题涉及到的代码示例和具体实现细节通常会比较复杂,但理解背后的原理和...

    http1.1的chunked协议解析

    ### HTTP 1.1 Chunked 编码详解 #### 协议概述 HTTP 1.1 的 Chunked 编码是一种特殊的传输编码方式,用于在不知道数据总长度的情况下传输动态生成的内容。根据 RFC 2616 的 3.6.1 节描述,chunked 编码通过将消息体...

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

    Chunked编码是HTTP协议中的一个特性,主要用在HTTP 1.1版本中,用于处理不确定长度的数据传输。这种编码方式允许发送方在不知道消息总长度的情况下,将数据分块发送,每一块都伴随着其大小的标识,最后一块则使用一...

    php下HTTP Response中的Chunked编码实现方法

    进行Chunked编码传输的HTTP Response会在消息头部设置: Transfer-Encoding: chunked 表示Content Body将用Chunked编码传输内容。 Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个...

    c语言 http chunked解码.docx

    HTTP1.1协议引入了一种名为`CHUNKED`编码的方式,用于处理那些在发送时无法预先知道内容长度的情况。这种编码方式对于动态生成的、流式传输的内容尤其有用,因为它允许服务器在不知道整个响应体确切大小的情况下就...

    http chunk

    下面将详细解析HTTP Chunked编码以及其在Netty框架中的应用。 ### HTTP Chunked Transfer Encoding HTTP Chunked Transfer Encoding是一种用于传输数据的编码方式,主要用于解决HTTP请求或响应的长度未知或无法...

    HTTP Chunk协议等

    HTTP Chunked编码是一种在HTTP协议中传输大体积数据的方式,主要用在HTTP 1.1版本中,因为HTTP 1.0不支持内容长度未知的响应。Chunked编码的引入解决了服务器无法预先知道响应体总长度的问题,允许数据分块发送,每...

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

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

    java 使用socked接收chunck分块数据

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

    weblogic不兼容客户端的解决办法

    这主要是因为 WebLogic 服务器使用 chunked 编码传输数据,而一些客户端可能不支持这种编码方式,导致数据传输失败。 解决方法一:关闭 Transfer-encoding: chunked WebLogic 服务器提供了一个配置选项,用于关闭 ...

    httpcore教程(中文版).pdf

    传输编码是HTTPCore的另一大亮点,它支持chunked编码和gzip压缩,这些特性对于处理大文件传输和提高网络传输效率至关重要。chunked编码允许分块传输数据,而gzip压缩则可以减小数据体积,降低带宽消耗。 HTTPCore...

    使用libcurl连接https服务器

    libcurl是一个功能强大的开源库,专门用于处理各种网络协议,包括HTTP、HTTPS、FTP等。在本文中,我们将深入探讨如何使用libcurl连接到HTTPS服务器,以实现安全的数据传输。 首先,理解HTTPS(HyperText Transfer ...

    parse chunk

    在HTTP协议中,"Chunked编码"是一种传输机制,它允许服务器发送不确定长度的数据块,而无需预先知道整个响应的总大小。这种编码方式在处理大文件或动态生成的内容时非常有用,因为服务器可能无法在开始传输之前知道...

    完全自助开发的HTTP代理程序

    这个程序能够处理HTTP协议的数据解包与打包,包括对chunked编码的处理,这对于理解HTTP协议的底层运作至关重要。在实际应用中,HTTP代理服务器扮演着一个中间人的角色,它接收客户端的请求,转发到目标服务器,并将...

    C++实现HTTP,代码基于轻量级开源库mongoose,附带封装代码http_client

    在实际使用中,你可以根据需求扩展`http_client`类,增加更多的功能,比如支持PUT、DELETE等其他HTTP方法,或者实现更复杂的请求体编码。 源码编译部分,你需要确保系统中安装了必要的编译工具,如GCC或Clang,并且...

Global site tag (gtag.js) - Google Analytics