I'm attempting to request some information using the Stack Exchange API. Supposedly, it returns responses compress with GZip. Using Microsoft's `System.IO.Compression.GZipStream` or `Ionic.Zlib.GZipStream`, I'm always told the data is not in GZip format... Even though the response's Content-Encoding is "gzip". I've also written the bytes from the response to a file and transferred it to a Linux box and attempted to gunzip it, but that also returned an error. What am I doing wrong? I am sending `Accept-Encoding: gzip` and getting `Content-Encoding: gzip`... System.IO.InvalidDataException - The magic number in GZip header is not correct. Make sure you are passing in a GZip stream. Here's is runnable code: internal static readonly string TagSearchUrl = "http://api.stackexchange.com/2.1/tags?site=stackoverflow&inname=c#"; internal static string FetchURL(string url) { var req = HttpWebRequest.Create(url); req.Headers["Accept-Encoding"] = "gzip"; var resp = req.GetResponse(); var contentType = resp.Headers["Content-Encoding"]; var responseString = new StreamReader(resp.GetResponseStream()).ReadToEnd(); return UnZip(responseString); } public static string UnZip(string value) { byte[] byteArray = StringToByteArray(value); using (var ms = new System.IO.MemoryStream(byteArray)) { //using (var sr = new Ionic.Zlib.GZipStream(ms, Ionic.Zlib.CompressionMode.Decompress)) { using (var sr = new System.IO.Compression.GZipStream(ms, System.IO.Compression.CompressionMode.Decompress)) { byteArray = new byte[byteArray.Length]; try { var count = sr.Read(byteArray, 0, byteArray.Length); } finally { sr.Close(); ms.Close(); } } } return ByteArrayToString(byteArray); } private static string ByteArrayToString(byte[] byteArray) { return System.Text.Encoding.UTF8.GetString(byteArray); } private static byte[] StringToByteArray(string value) { return System.Text.Encoding.UTF8.GetBytes(value); }