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;
}
stream.Close();
Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, totalBytesRead));
}
}
Posted
06-15-2010 3:04 PM
by
Scott Seely