I'm connecting to a REST API that returns a zip file with a small size (10k) with an XML file inside. When I copy it to a MemoryString and then Decompress it, I get the following error:
System.IO.InvalidDataException: 'The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.'
Obs: When I write it directly on the disk everything goes well. Why can't I do Decompress? Thank you.
public byte[] makeGET()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endpoint);
request.Method = httpMethod.ToString();
request.Headers.Add("Authorization", "Basic " + authHeader);
request.Accept = "application/zip";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
throw new ApplicationException("Error:" + response.StatusCode);
}
using (Stream responseStream = response.GetResponseStream())
{
if (responseStream != null)
{
/*using (Stream s = File.Create(@"c:\test.zip"))
{
responseStream.CopyTo(s);
}*/
using (MemoryStream msIn = new MemoryStream())
{
responseStream.CopyTo(msIn);
return msIn.ToArray();
}
}
}
}
return null;
}
public byte[] Decompress (byte[] msIn)
{
byte[] output;
MemoryStream tmp = new MemoryStream(msIn);
using (MemoryStream msOut = new MemoryStream())
{
using (var gzip = new GZipStream(tmp, CompressionMode.Decompress))
{
gzip.CopyTo(msOut);
}
output = msOut.ToArray();
}
return output;
}