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