Take the 2-minute tour ×
Stack Apps is a question and answer site for apps, scripts, and development with the Stack Exchange API. It's 100% free, no registration required.

I ported all of my integration tests to phone 7, which is a flavor of silverlight 3, and found that stackauth is not forcing gzip as expected.

while this simply means that I need to check the first 2 bytes of the result to determine if it is gzipped, this does violate the official api protocol.

Note: wp7/sl3 do not send 'accept-encoding' so this seems to indicate that whatever hoops you have made the other endpoints jump through to force gzip, stackauth was missed.

The reason this became an issue for me is that I cannot read response headers to determine the 'content-encoding' of the response and was relying on the previous assertion that all data will be compressed and when it came back plain text... BOOM!.

As a reference to others, here is how to get what you need regardless of the encoding of the stream.

byte[] data = response.GetResponseStream().ReadFully();
// ReadFully is an extension scribbled out by some guy named skeet
// http://www.yoda.arachsys.com/csharp/readbinary.html

if (data.Length > 2 && data[0]==31 && data[1]==139)
{
    using (var ms = new MemoryStream(data))
    using (var gzip = new GZipInputStream(ms))
    using (var reader = new StreamReader(gzip))
    {
        json = reader.ReadToEnd();
    }
}
else
{
    json = Encoding.UTF8.GetString(data, 0, data.Length);
}
share|improve this question
2  
Windows Phone 7 doesn't give you access to HTTP headers? Whose dumb design idea was that? –  Nathan Osman Jul 24 '10 at 16:46
    
@geo - yeah, i am not tickled about it, but the technology is based on a bastardized silverlight3 so those limitations carry over. –  Sky Sanders Jul 24 '10 at 17:17

1 Answer 1

up vote 1 down vote accepted

This should be fixed now.

StackAuth will send down gzip'd content (whether you ask for it or not) just like the API. Content-Encoding is also set, as a debugging aid (for browsers and the like), but bear in mind that proxies love to strip that out so don't rely on its presence*.

*Read: keep doing what you were doing in the first place. :)

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .