0

I'm a little confused about how to properly deserialize gziped Json payload from a HttpClient instance.

So far I'm doing the following, but it seems wrong. At least too complicated. Can't I feed a stream to Jil? Can't the HttpClient unzip the stream?

var client = new HttpClient();
var userEndPoint = new Uri(baseUri, "api/login");
var request = new HttpRequestMessage();
request.RequestUri = userEndPoint;
request.Method = HttpMethod.Get;
var response = _client.SendAsync(request).Result;

var userGzipByteArray = response.Content.ReadAsByteArrayAsync().Result;
var outStream = new MemoryStream();
using (var gzStream = new GZipStream(userGzipByteArray , CompressionMode.Decompress))
{
    gzStream.CopyTo(outStream);
}
var userByteArray =  outStream.ToArray();
var userJson = userByteArray .ConvertToString();
var user = JSON.Deserialize<User>(userJson , Jil.Options.ISO8601PrettyPrintIncludeInherited);
Soner Gönül
  • 97,193
  • 102
  • 206
  • 364
Knack
  • 1,044
  • 2
  • 12
  • 25

1 Answers1

0

You can use the AutomaticDecompression flag for this. See Does .NET's HttpWebResponse uncompress automatically GZiped and Deflated responses?

Community
  • 1
  • 1
kieran
  • 1,537
  • 10
  • 10