web-dev-qa-db-ja.com

WebClientからのgzip応答の解凍

WebClient.DownloadString()メソッドでダウンロードされたgzip応答を解凍する簡単な方法はありますか? WebClientでgzip応答を処理する方法について何か提案はありますか?

38
adrin

これを行う最も簡単な方法は、組み込みの 自動解凍HttpWebRequestクラスで使用することです。

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

WebClientでこれを行うには、WebClientから派生した独自のクラスを作成し、GetWebRequest()メソッドをオーバーライドする必要があります。

_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スレッド: 。NETのHttpWebResponseは自動的にGZipされた応答と収縮した応答を解凍しますか?

72
BrokenGlass