如何读取在 http 响应中发送的 GZip 内容
Posted
技术标签:
【中文标题】如何读取在 http 响应中发送的 GZip 内容【英文标题】:How to read GZip content sent in a http response 【发布时间】:2013-01-16 14:06:47 【问题描述】:我已经尝试了一个多星期,以便能够读取在 Http Respose 中发送的 gzip 压缩内容。
好的,让我更具体一点 - Web 服务器发送一个包含 Content-Disposition 标头和附件属性的响应,如下所示,
Content-Disposition:附件,文件名=00011122.txt
我可以保存所有收到的“响应标题”,但是无法保存发送的 .txt 文件。此外,在收到所有标题后,我还收到了一些乱码,我假设是 .txt 文件。
但我完全不知道如何保存这个文件并解压缩它并将其内容作为任何其他文本文件查看。
我已经搜索了互联网并尝试了很多东西,但似乎没有任何帮助。
我使用 cURL - libcurl.net、C# 作为我的编程语言。
我们将不胜感激任何帮助、建议和反馈。
问候, 周杰伦
【问题讨论】:
这与 Content-Disposition 有什么特别的关系?无论如何,您可能看到的是使用 Content-Encoding "gzip" 的响应。所以你需要做的是对payload应用GZIP解压。 【参考方案1】:该支持尚未添加到 cURL。见:http://curl.haxx.se/mail/tracker-2007-12/0008.html
【讨论】:
感谢 Kedar 的回复。我之前读过,但希望现在将这个功能添加到 cURL 中。您知道如何下载作为 Content-Disposition 标头的一部分发送的文件吗? Fiddler 做得很好,准确地显示了文件的内容。知道这是如何完成的和可以实现的吗? IMO,您可以轻松编写一个简单的客户端来读取 Content-Disposition 标头并将内容(由服务器作为文件/附件发送)保存在本地。只是 cURL 现在不支持它。请注意,服务器应该将文件作为响应正文的一部分发送。【参考方案2】:我希望它像你提到的那样简单。不幸的是,这不是那么容易做到的。尤其是当内容被 gzip 压缩时。
我在互联网上遇到了很多保存响应数据的示例。但是,没有一个示例显示如何保存作为 Content-Dispositon 标头的一部分发送的数据,尤其是在内容被 gzip 压缩时。
如果您知道如何操作,请告诉我。
问候, 周杰伦
【讨论】:
以上是关于如何读取在 http 响应中发送的 GZip 内容的主要内容,如果未能解决你的问题,请参考以下文章