When reading from the stream you can get less bytes than requested.
http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx
The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
msdn example for WebResponse.GetResponseStream()
:
http://msdn.microsoft.com/en-us/library/system.net.webresponse.getresponsestream.aspx