【发布时间】:2020-02-02 12:21:40
【问题描述】:
如何使用 Indy 或 ICS 库在 Delphi 中解码使用 Brotli 压缩的 http 响应?默认情况下,它们似乎都不包含对它的支持。
【问题讨论】:
-
YuBrotli - 免费的 Delphi 组件,用于使用 Brotli 算法进行压缩/解压缩。
-
我不能代表 ICS,但 Indy 目前并不原生支持 Brotli。但是,如果您准备手动解码 Brotli 数据,则可以手动设置 TIdHTTP 在 HTTP 响应上接受 Brotli。
-
@zed 我想您可以直接从您的代码中调用开源官方github.com/google/brotli c 库。我不喜欢 YuBrotli 要求您为使用开源库付费。但无论如何,我看不到在 Delphi 中解码 Brotli 内容的任何好处。客户端的 deflate/gzip 有什么问题?它会足够快,具有非常好的压缩比。
-
@ArnaudBouchez 是的,你可以。但首先,您必须围绕 dll 编写一个 pascal 包装器,并了解如何使用低级 API。对于我来说,我一直比较喜欢这种方式,但是对于其他对这种低级东西不太熟悉的人,我会推荐使用 YuBrotli,直到没有任何其他开源组件为止。澄清一下 - YuBrotli 是免费的(你可以在任何地方使用它,与预编译的 .dcu 链接)但不是开源的。
-
@zed 有开源的替代方案,至少在 mORMot 的一个副项目中有一个 - 请参阅我的答案。我永远不会在任何项目中放置一些没有源代码的第三方组件。