1

Windows Phoneでアプリを操作していて、HTTP GETメソッドを使用してWebサーバーからデータを取得しようとしていますが、応答のcontent-encodingフィールドは、データがdeflateアルゴリズムによって圧縮されたことを示しています。

GZipInputStreamでgzipストリームを処理できる便利なライブラリSharpZipLibを見つけましたが、deflateストリームでは機能しません。

SharpZipLibを使用してストリームを抑制するにはどうすればよいですか?それとも、それに対処する他の方法はありますか?

どうもありがとう!

4

2 に答える 2

1

SharpZipLibを使用してこれを実現する方法はわかりませんが、別の選択肢があります。それは、ここですべてがパックされてすぐに使用できるDotNetZipです。DeflateStream

さらに、AFAIK、DotNetZipはMs-Plライセンスであるため、商用アプリケーションで使用できますが、SharpZipLib(GPL)では使用できません。

于 2012-03-25T11:50:43.083 に答える
1

注意してください。deflateメソッドを返すhttpサーバーは、2つの異なるもののいずれかを提供する可能性があります。zlibでラップされた(RFC 1950)deflate(RFC 1951)ストリーム(http標準で指定されているもの)またはraw deflate(RFC 1951)ストリームのいずれか。後者は、標準を注意深く読んでいない誰かによって書かれたMicrosoftサーバーから見られました。

これを解決するには、両方の方法(正しい方法から開始)を試すか、クライアントから受け入れられる方法としてdeflateを提供せず、gzipのみを許可します。gzipにあいまいさはありません。

両方の方法を試すことができるzlibへのインターフェースがある場合もあれば、独自のインターフェースを作成するか、zlibを直接使用する必要がある場合もあります。zlibでは、inflateInit(strm)で始まるzlibラップされたストリームをデコードするか、inflateInit2(strm、-15)で始まる生のdeflateストリームをデコードできます。

于 2012-03-25T17:31:41.417 に答える