Just a small point, rather than manually having to loop through the received bytes, you could simply use a StreamReader instead. Example:

Code:
        private static String Download(String url)
        {
            String str = String.Empty;

            try
            {
                WebRequest request = WebRequest.Create(url);
                WebResponse response = request.GetResponse();
                Stream stream = response.GetResponseStream();
                StreamReader reader = new StreamReader(stream, Encoding.Default);
                str = reader.ReadToEnd();
                reader.Close();
                stream.Flush();
                stream.Close();
                response.Close();
            }
            catch { }

            return str;
        }