【问题标题】:WinHTTP Decompression function?WinHTTP解压功能?
【发布时间】:2015-04-06 03:18:50
【问题描述】:

目前我在 c++ 中使用 winhttp api 从服务器获取数据。服务器可以支持各种压缩格式。所以目前我想使用winhttp来获取压缩格式(例如gzip)并解压缩它。是否可以使用winhttp解压数据?

【问题讨论】:

  • 我遇到了类似的问题。与使用 WinHttp 相比,使用 WinINet 更容易。移植速度非常快,而且 WinInet 比 WinHttp 级别更高(实际上是它之上的一层)。这样做可以使@Sergey 的以下答案适用且有效。

标签: http


【解决方案1】:

当然有可能。

来自here

要设置解码选项,应用程序调用 InternetSetOption 从 InternetOpen、InternetConnect 或 HttpOpenRequest。指定了 INTERNET_OPTION_HTTP_DECODE 选项 在 dwOption 参数中,lpBuffer 参数指向一个 布尔变量设置为真。要禁用解码,应用程序 使用 INTERNET_OPTION_HTTP_DECODING 选项调用 InternetSetOption 并将布尔变量设置为 false。

所以http压缩对用户代码是透明的,你只需调用InternetSetOption,你的流量就会被压缩。

【讨论】:

  • InternetSetOption 是 WinINet 函数,而不是 WinHTTP。 WinHTTP 不支持压缩:msdn.microsoft.com/en-us/library/windows/desktop/…
  • 只需将 WinHttpSetOption() 与 WINHTTP_OPTION_DECOMPRESSION 和 WINHTTP_DECOMPRESSION_FLAG_GZIP、WINHTTP_DECOMPRESSION_FLAG_DEFLATE 或 WINHTTP_DECOMPRESSION_FLAG_ALL 一起使用。在 Windows 8.1 和更高版本中受支持。
猜你喜欢
  • 2018-03-23
  • 1970-01-01
  • 2019-05-07
  • 2019-03-16
  • 1970-01-01
  • 2013-12-20
  • 2022-01-02
  • 2010-09-06
  • 1970-01-01
相关资源
最近更新 更多