I wish to automatically uncompress GZiped response. I am using the following snippet:
mywebclient.Headers[HttpRequestHeader.AcceptEncoding] = "gzip";
mywebclient.Encoding = Encoding.UTF8;
try
{
var resp = mywebclient.DownloadData(someUrl);
}
I have checked HttpRequestHeader enum
, and there is no option to do this via the Headers
How can I automatically decompress the resp? or Is there another function I should use instead of mywebclient.DownloadData
?
WebClient uses HttpWebRequest under the covers. And HttpWebRequest supports gzip/deflate decompression. See HttpWebRequest AutomaticDecompression property
However, WebClient class does not expose this property directly. So you will have to derive from it to set the property on the underlying HttpWebRequest.
Depending on your situation, it may be simpler to do the decompression yourself.
I created all the temporary variables for clarity. This can all be flattened to only
client
andtextResponse
.Or, if simplicity is the goal, you could even do this using ServiceStack.Text by Demis Bellot:
(There are other
.Get*FromUrl
extension methods)