我有一个 C# 应用程序,它与基于 PHP 的 SOAP Web 服务进行通信以进行更新和许可。
我现在正在开发一个反馈系统,供用户通过软件自动提交错误和跟踪日志。根据我之前发布的一个问题,我认为 Web 服务将是最好的方法(最有可能以最少的配置正常工作)。
我目前的想法是使用 .NET 内置的 gzip 压缩来压缩文本文件,转换为 base64,发送到 Web 服务,并将 PHP 脚本转换为二进制并解压缩数据。
PHP 可以解压用 GZipStream 压缩的数据吗?如果可以,如何解压?
我有一个 C# 应用程序,它与基于 PHP 的 SOAP Web 服务进行通信以进行更新和许可。
我现在正在开发一个反馈系统,供用户通过软件自动提交错误和跟踪日志。根据我之前发布的一个问题,我认为 Web 服务将是最好的方法(最有可能以最少的配置正常工作)。
我目前的想法是使用 .NET 内置的 gzip 压缩来压缩文本文件,转换为 base64,发送到 Web 服务,并将 PHP 脚本转换为二进制并解压缩数据。
PHP 可以解压用 GZipStream 压缩的数据吗?如果可以,如何解压?
我真的试过这个。GZipStream 不起作用。另一方面,在 .NET 端使用 DeflateStream 进行压缩并在 PHP 端使用 gzinflate 进行解压缩确实有效。你的旅费可能会改变...
如果 http 级别的库实现了它(客户端和服务器),http 支持 gzip-compression,在这种情况下,没有理由手动压缩任何东西。在您进一步冒险之前,您应该检查这是否已经发生。
是的,PHP 可以解压缩 GZIP 压缩字符串,无论有无标题。
我不确定您想要哪一个,因为我不熟悉 .NET GZipStream。这听起来有点像 gzuncompress,因为 ZLIB 格式是一种“流”格式,但请尝试所有这三种格式。
由于服务器正在接受 Web 请求,因此您确实应该检查 HTTP 标头以确定是否有任何客户端接受 GZIP 编码,而不是每次都猜测和 gzip 压缩。
如果 PHP 客户端可以执行 gzip,它将设置标头,然后您的代码将做出相应的反应并做正确的事情。当为您的代码提供工具来学习客户端的功能时,假设或猜测是一个糟糕的选择。
我写了一篇我最近发布的文章,展示了如何在 C# 中压缩/解压缩。我将它用于几乎相同的场景。我想将日志文件从客户端传输到服务器,它们通常很大。但是在我的情况下,我的 web 服务在 .NET 中运行,所以我可以使用解压缩方法。但看起来 PHP 确实支持一种称为 gzdecode 的方法。