2010-12-31 3 views
37

WebClient.DownloadString() 메서드를 사용하여 다운로드 한 gzip 응답의 빠른 압축을 푸는 방법이 있습니까? WebClient에서 gzip 응답을 처리하는 방법에 대한 제안 사항이 있습니까?WebClient에서 gzip 응답 압축 해제

답변

72

가장 쉬운 방법은 automatic decompression에 내장 된 HttpWebRequest 클래스를 사용하는 것입니다.

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

는 자신의 클래스를 WebClient에서 파생 확인하고 GetWebRequest() 메소드를 오버라이드 (override) 할 가지고 WebClient이 작업을 수행합니다. Does .NET's HttpWebResponse uncompress automatically GZiped and Deflated responses?

+1

이 파생 웹 클라이언트 클래스에 대한 acceptencoding 헤더를 지정할 필요가 없다 :

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 스레드 참조? – user3791372