C 使用WININET API处理GZIP压缩;s

C 使用WININET API处理GZIP压缩;s,c,winapi,com,ole,wininet,C,Winapi,Com,Ole,Wininet,我的服务器向我发送一个JSON数据流,该数据流使用GZIP压缩进行压缩 当我在普通IE浏览器上请求这些数据时,我会得到数据,当我提到要打开的应用程序时,浏览器会自动解压缩该数据流并显示我的JSON数据 我的C应用程序使用COM/OLE嵌入IE浏览器实例,我使用WININET进行GET/POST操作,因此我在这里压缩了数据 因为它的IE浏览器功能在默认IE浏览器的情况下自动解压缩GZIP数据 如何在我的C应用程序中通过WININET自动解密数据?启动Vista,INTERNET\u选项\u HTT

我的服务器向我发送一个JSON数据流,该数据流使用GZIP压缩进行压缩

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

我的C应用程序使用COM/OLE嵌入IE浏览器实例,我使用WININET进行GET/POST操作,因此我在这里压缩了数据

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

启动Vista,
INTERNET\u选项\u HTTP\u解码
标志在WININET中启用gzip解码:

:

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

当解码失败时,应用程序有两个选项:它可以删除接受编码头并重新发送请求,或者它可以将请求上的INTERNET\u选项\u HTTP\u解码选项设置为false,然后重新发送请求。如果解码选项设置为false,则应用程序必须检查内容编码头并在应用程序级别执行任何解码


在早期版本的Windows中,您必须自行解压(这也相当容易使用,例如)

InternetExplorer7
WinXP
中解压
GZIP
数据。这是如何发生的?它可能是与
IE7
一起添加的。问题是,某些XPs可能仍然没有现成的可用性(如果您出于任何原因以所有XPs为目标)。而且IE7已经包含在Vista中,这要感谢我将目标锁定在带有SP 2及以上版本的Windows XP中。将进行尝试。在
SetInternetOption
WININET API中设置
INTERNET\u选项\u HTTP\u解码
标志有效。谢谢@Roman R.谢谢。还有一点需要注意:在打开http请求之前设置此选项。不迟。