How can I transfer data from HTTPResponse to the console?

I am writing a console application that should receive a large amount of data. I tried to do it like this

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader sr = new StreamReader(response.GetResponseStream())) { responseText = sr.ReadToEnd(); } Console.WriteLine(responseText); 

But this code should wait for a complete response to writing data to the console. How can I transcode this to stream data to the console as I receive it?

Thanks.

0
c #
source share
4 answers

If you get big data, you will need to use HttpWebRequest asynchronously.

Use HttpWebRequest.BeginGetResponse ()

 HttpWebRequest webRequest; void StartWebRequest() { webRequest.BeginGetResponse(new AsyncCallback(FinishWebRequest),null); } void FinishWebRequest(IAsyncResult result) { webRequest.EndGetResponse(result); } 

When the asynchronous operation is completed, the callback function is called. You should at least call EndGetResponse () from this function.

+1
source
 char[] chars = new char[1024]; int numread = 0; while ((numread = sr.Read(chars, 0, chars.Length)) > 0) Console.Write(new string(chars)); Console.WriteLine(); 
0
source

Try reading one line at a time: ReadLine() :

  while (!sr.EndOfStream) { responseText = sr.ReadLine(); Console.WriteLine(responseText); } 
0
source

What does ReadToEnd() mean.

To write everything to a file:

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); var responseStream = response.GetResponseStream(); using (var fileStream = new FileStream("C:\\temp\\myfile.avi")) { var buffer = new byte[8192]; while (true) { var bytesRead = responseStream.Read(buffer, 0, buffer.Length); if (bytesRead <= 0) break; fileStream.Write(buffer, 0, bytesRead); } } 
0
source

All Articles