This question came up on Twitter. I’m posting the solution here for posterity. How do you read a non-seekable Stream into a byte[]? Specifically, a HttpWebResponse? Like this:
class Program{ static void Main(string[] args) { var request = WebRequest.Create("http://www.scottseely.com/blog.aspx"); var response = request.GetResponse() as HttpWebResponse; var stream = response.GetResponseStream(); var buffer = new byte[int.Parse(response.Headers["Content-Length"])]; var bytesRead = 0; var totalBytesRead = bytesRead; while(totalBytesRead < buffer.Length) { bytesRead = stream.Read(buffer, bytesRead, buffer.Length - bytesRead); totalBytesRead += bytesRead; } Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, totalBytesRead)); } }