3

我有一个 C# 应用程序,它与基于 PHP 的 SOAP Web 服务进行通信以进行更新和许可。

我现在正在开发一个反馈系统,供用户通过软件自动提交错误和跟踪日志。根据我之前发布的一个问题,我认为 Web 服务将是最好的方法(最有可能以最少的配置正常工作)。

我目前的想法是使用 .NET 内置的 gzip 压缩来压缩文本文件,转换为 base64,发送到 Web 服务,并将 PHP 脚本转换为二进制并解压缩数据。

PHP 可以解压用 GZipStream 压缩的数据吗?如果可以,如何解压?

4

5 回答 5

7

我真的试过这个。GZipStream 不起作用。另一方面,在 .NET 端使用 DeflateStream 进行压缩并在 PHP 端使用 gzinflate 进行解压缩确实有效。你的旅费可能会改变...

于 2009-05-25T07:53:51.043 回答
1

如果 http 级别的库实现了它(客户端和服务器),http 支持 gzip-compression,在这种情况下,没有理由手动压缩任何东西。在您进一步冒险之前,您应该检查这是否已经发生。

于 2009-05-25T12:38:58.707 回答
0

是的,PHP 可以解压缩 GZIP 压缩字符串,无论有无标题。

我不确定您想要哪一个,因为我不熟悉 .NET GZipStream。这听起来有点像 gzuncompress,因为 ZLIB 格式是一种“流”格式,但请尝试所有这三种格式。

于 2009-05-25T07:00:23.740 回答
0

由于服务器正在接受 Web 请求,因此您确实应该检查 HTTP 标头以确定是否有任何客户端接受 GZIP 编码,而不是每次都猜测和 gzip 压缩。

如果 PHP 客户端可以执行 gzip,它将设置标头,然后您的代码将做出相应的反应并做正确的事情。当为您的代码提供工具来学习客户端的功能时,假设或猜测是一个糟糕的选择。

于 2009-05-25T07:05:17.850 回答
0

我写了一篇我最近发布的文章,展示了如何在 C# 中压缩/解压缩。我将它用于几乎相同的场景。我想将日志文件从客户端传输到服务器,它们通常很大。但是在我的情况下,我的 web 服务在 .NET 中运行,所以我可以使用解压缩方法。但看起来 PHP 确实支持一种称为 gzdecode 的方法。

http://coding.infoconex.com/post/2009/05/Compress-and-Decompress-using-net-framework-and-built-in-GZipStream.aspx

于 2009-05-25T16:56:37.540 回答