Win32:WinHttpReadData 中分块编码支持的状态如何?

Posted

技术标签:

【中文标题】Win32:WinHttpReadData 中分块编码支持的状态如何?【英文标题】:Win32: What is the status of chunked encoding support in WinHttpReadData? 【发布时间】:2010-03-24 22:33:58 【问题描述】:

documentation for WinHttpReadData 说,关于HTTP's chunked transfer coding:

从 Windows Vista 和 Windows Server 2008 开始,WinHttp 使应用程序能够对发送到服务器的数据执行分块传输编码。当 WinHttp 响应中存在 Transfer-Encoding 标头时,WinHttpReadData 会在将数据提供给应用程序之前剥离分块信息。

谁能破译这个?


Q1 首先,此文本位于 WinHttpReadData 页面上,用于在 HTTP 客户端应用程序中... 读取数据,特别是响应数据。那么它说的是什么意思

从 Windows Vista 和 Windows Server 2008 开始,WinHttp 使应用程序能够对发送到服务器的数据执行分块传输编码。

WinHttpReadData 函数不用于发送到服务器的数据。它在从服务器读取数据时使用。

咨询the doc for the WinHttpWriteData function, 用于将数据作为 HTTP 请求的一部分发送到服务器,没有提及分块传输功能。


Q2假设我知道新的分块传输支持是什么,我如何获得这种支持?它说它是 Vista 和 WS2008 上的新功能.如果我编写一个在 WS2003 上运行并使用 WinHttpReadData 的应用程序遇到分块响应或 WinHttpWriteData,它想发送分块请求会发生什么?

在这两行之间,这个文档是否说我需要链接到 Vista 时代 Windows SDK 或更高版本中的 WinHttp.lib 才能获得进行分块编码的能力?或者说在WS2003上真的不可能吗?也就是说,使用这个库进行分块传输的应用程序必须在指定的操作系统上运行?


这可能读起来像咆哮,但事实并非如此。我真的很想知道。

【问题讨论】:

【参考方案1】:

我的本​​地副本没有它,对我来说似乎是一个错误。 this article,“传输编码标头”部分介绍了分块。它应该是透明的阅读。

【讨论】:

啊,所以这些是信息的关键位:分块在读取时是透明的,在任何一方 - 作为服务器读取请求或作为客户端读取响应。另一方面,发送方必须“做”一些事情才能使分块编码起作用。你引用的WinHttpSendRequest 的文档中描述了那个“东西”。很棒。

以上是关于Win32:WinHttpReadData 中分块编码支持的状态如何?的主要内容,如果未能解决你的问题,请参考以下文章

STM32大文件分块校验CRC

分块查找算法的实现。在数组{90,43,15,32,78,9,66,49,35,71,22,86,18,53}中查找关键字为35的码--简单

查找 | 分块查找

我如何分块一个可枚举的?

在 Greenplum 上分块执行查询

在服务器端处理 plupload 的分块上传