3

我的服务器向我发送一个使用 GZIP 压缩压缩的 JSON 数据流。

当我在普通的 IE 浏览器上请求这些数据时,我得到了数据,当我提到要打开的应用程序时,浏览器会自动解压缩该数据流并向我显示我的 JSON 数据。

我的 C 应用程序正在使用 COM/OLE 来嵌入 IE 浏览器实例,并且我正在使用 WININET 进行 GET/POST 操作所以在这里我将数据压缩。

由于它的 IE 浏览器功能在默认 IE 浏览器的情况下自动解压缩 GZIP 数据如何在我的 C 应用程序中通过 WININET 自动解密数据?

4

1 回答 1

5

从 Vista 开始,INTERNET_OPTION_HTTP_DECODINGflag 在 WinInet 中启用 gzip 解码:

INTERNET_OPTION_HTTP_解码

使 WinINet 能够为 gzip 和 deflate 编码方案执行解码。有关详细信息,请参阅内容编码

当解码失败时,应用程序有两个选择:它可以删除 Accept-Encoding 标头并重新发送请求,或者可以将请求上的 INTERNET_OPTION_HTTP_DECODING 选项设置为 false 然后重新发送请求。如果解码选项设置为 false,则应用程序必须检查 Content-Encoding 标头并在应用程序级别执行任何解码。

在早期版本的 Windows 中,您必须自己解压缩(使用例如http://zlib.net/也相当容易)

于 2012-08-19T07:02:32.617 回答