2010-12-31 21 views
37

WebClient.DownloadString()メソッドでダウンロードしたgzipレスポンスを素早く解凍する方法はありますか? WebClientでgzipレスポンスを処理する方法に関する提案はありますか?WebClientからgzipレスポンスを解凍する

答えて

72

これを行う最も簡単な方法は、クラスを使用してautomatic decompressionの組み込み関数を使用することです。あなたはWebClientから派生する独自のクラスを作成し、GetWebRequest()メソッドをオーバーライドする必要がWebClientでこれを行うには

var request = (HttpWebRequest)HttpWebRequest.Create("http://stackoverflow.com"); 
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); 
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 

public class GZipWebClient : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 
     request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; 
     return request; 
    } 
} 

また、このSOスレッドを参照してください。Does .NET's HttpWebResponse uncompress automatically GZiped and Deflated responses?

+1

派生Webクライアントクラスのacceptencodingヘッダを指定する必要はありませんか? – user3791372

関連する問題