37
WebClient.DownloadString()メソッドでダウンロードしたgzipレスポンスを素早く解凍する方法はありますか? WebClientでgzipレスポンスを処理する方法に関する提案はありますか?WebClientからgzipレスポンスを解凍する
WebClient.DownloadString()メソッドでダウンロードしたgzipレスポンスを素早く解凍する方法はありますか? WebClientでgzipレスポンスを処理する方法に関する提案はありますか?WebClientからgzipレスポンスを解凍する
これを行う最も簡単な方法は、クラスを使用して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?
派生Webクライアントクラスのacceptencodingヘッダを指定する必要はありませんか? – user3791372