Windows phone 7 如何使用SharpZipLib解压放气流(不是gzip)?

Windows phone 7 如何使用SharpZipLib解压放气流(不是gzip)?,windows-phone-7,deflate,sharpziplib,compression,Windows Phone 7,Deflate,Sharpziplib,Compression,我正在Windows Phone上开发一个应用程序,试图通过HTTP get方法从web服务器获取数据,响应中的内容编码字段表明数据是通过deflate算法压缩的 我发现了有用的库SharpZipLib,它可以用GZipInputStream处理gzip流,但它不适用于deflate流 如何使用SharpZipLib抑制流?或者有没有其他方法来解决这个问题 非常感谢 不知道如何使用SharpZipLib实现这一点,但您还有另一个选择,那就是有一个DeflateStream可以在这里打包使用 此外

我正在Windows Phone上开发一个应用程序,试图通过HTTP get方法从web服务器获取数据,响应中的内容编码字段表明数据是通过deflate算法压缩的

我发现了有用的库SharpZipLib,它可以用GZipInputStream处理gzip流,但它不适用于deflate流

如何使用SharpZipLib抑制流?或者有没有其他方法来解决这个问题


非常感谢

不知道如何使用SharpZipLib实现这一点,但您还有另一个选择,那就是有一个
DeflateStream
可以在这里打包使用


此外,恕我直言,DotNetZip是Ms Pl许可的,因此它可以用于商业应用,而SharpZipLib(GPL)不能

当心。返回deflate方法的http服务器可能提供两种不同的内容之一。zlib包装(RFC1950)deflate(RFC1951)流(这是http标准指定的)或原始deflate(RFC1951)流。后者是从微软服务器上看到的,作者没有仔细阅读该标准

您可以通过两种方式来解决这个问题(从正确的方式开始),或者不提供deflate作为客户机接受的方法,只允许gzip。gzip没有歧义


可能有一个接口允许您尝试两种方法,如果没有,您可能需要编写自己的接口或直接使用zlib。在zlib中,您可以从inflateInit(strm)开始解码zlib包装的流,也可以从inflateInit 2(strm,-15)开始解码原始放气流。

SharpZipLib for Windows Phone允许在使用库的二进制形式的情况下用于商业应用程序。非常感谢!DotNetZip中的DeflateStream工作得很好。谢谢你的回答,但是远程服务器没有返回gzip流,我也不知道它是哪个版本的deflate。总之,我刚刚解决了上面提到的DotNetZip的问题。看起来DotNetZip有一个DeflateStream类和一个ZlibStream类。如果您使用的是DeflateStream,则服务器(错误地)返回原始deflate数据。如果您使用的是ZlibStream,则服务器(正确)返回zlib包装的deflate数据。我的观点是,为了使代码具有通用性,它应该尝试zlib,如果这不起作用,那么就尝试deflate。@MarkAdler,从.NET 4.5开始,DeflateStream在内部使用zlib。