2

我正在使用 TCL 8.5(无法升级)并运行 HTTP 包的 2.7.7 版本。我正在调用一个似乎正在使用以下 http::geturl 命令下载已压缩的图像的库:

http::geturl $url -headers {Accept-Encoding gzip} 

我收到了这个错误:

invalid command name "zlib"

在网上搜索,我只能找到对基本上建议停止发送 Accept-Encoding gzip 的错误的引用,我不能这样做(也不能升级到 8.6)http://sourceforge.net/p/tcl/错误/4784/

我的问题是:这个问题是否有任何 8.5 解决方法?有没有办法阻止这个库发送“Accept-Encoding gzip”标头?

4

1 回答 1

1

问题是代码认为您已经获得了可用的 zlib 包(它提供了zlib命令),因此打开了对 gzip 压缩流的支持。代码中最简单的修复方法是:

package require zlib

只要这发生在您调用执行 的代码之前http::geturl,这就足够了。

如果您没有该包(在这种情况下,您package require将从在发送 gzip 压缩数据的服务器中,尽管没有被要求。TIP #234中指向的代码(即http://svn.scheffers.net/zlib上的 SVN 存储库)包含 zlib 软件包版本的源代码,特别是它构成了Tcl 8.6 中的内置支持,但我认为它只使用 Tcl 8.5 API。

无奈的是,zlib 包有几个版本;唉,这是最难获得的 Tcl 包之一。

于 2013-09-03T04:00:02.750 回答