2012-05-02 9 views
0

私のアプリケーションが私のサービスの応答を消費しているWindows phone 7 appを開発しています。Windows Phone 7アプリケーションでサービスから返されたxmlの圧縮を解除できませんでしたか?

XMLのサイズが非常に大きいので、私のサービスは、私が使用してXMLを圧縮していた、XML(文字列)の応答を与えている: -

public static string Compress(string text) 
    { 
     byte[] buffer = Encoding.UTF8.GetBytes(text); 
     MemoryStream ms = new MemoryStream(); 
     using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true)) 
     { 
      zip.Write(buffer, 0, buffer.Length); 
     } 

     ms.Position = 0; 
     MemoryStream outStream = new MemoryStream(); 

     byte[] compressed = new byte[ms.Length]; 
     ms.Read(compressed, 0, compressed.Length); 

     byte[] gzBuffer = new byte[compressed.Length + 4]; 
     System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length); 
     System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4); 
     return Convert.ToBase64String(gzBuffer); 
    }                        

私はGZipStreamクラスを使用して追加データを圧縮していますSystem.IO.Compressionを使用して、名前空間が、

私の問題があることである: - 私は(のWindows Phone 7アプリ)は、クライアント側でそれを、圧縮解除することはできませんよ

、私はでそのDLLを追加しようとしましたWindows phone 7アプリプロジェクト

それは言う: - system.Io.Compression dllは、Windows phone 7ランタイムを使用して構築されていないため追加できませんでした。Windows PhoneプロジェクトはWindows電話アセンブリのみで動作します。

私は間違ったことをしています、何か良い方法がありますか?

あなたは私に最適な解決策を教えてもらえますか?事前に

おかげ

答えて

0

のWindows Phoneは、デスクトップの.NETライブラリを参照することはできませんが、Windowsの携帯電話のための同等はありません。

ジップ要求を簡素化し、サードパーティのライブラリがあります:

  • Delay.GzipWebClient
  • に(NuGet)参照パッケージを追加し、あなたのスタートアップに次のコードを追加します

を_

その時点から
WebRequest.RegisterPrefix("http://", SharpGIS.WebRequestCreator.GZip); 
WebRequest.RegisterPrefix("https://", SharpGIS.WebRequestCreator.GZip); 

、任意のWeb要求は自動的になります圧縮されたレスポンスを要求し、アプリケーションコードがそれらのレスポンスを取得するまで圧縮されません。

関連する問題