C# 如何将数据从HTTPResponse流式传输到控制台?

C# 如何将数据从HTTPResponse流式传输到控制台?,c#,.net,C#,.net,我正在编写一个需要接收大量数据的控制台应用程序。我试着这样编码 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader sr = new StreamReader(response.GetResp

我正在编写一个需要接收大量数据的控制台应用程序。我试着这样编码

 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);
但这段代码需要等待整个响应将数据写入控制台。如何重新编码以在接收数据时将数据流传输到控制台


谢谢。

试着一次读一行:
ReadLine()

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

这就是
ReadToEnd()
的意思

要将所有内容写入文件,请执行以下操作:

 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);
     }
 }
HttpWebRequest-request=(HttpWebRequest)WebRequest.Create(url);
request.Method=“GET”;
HttpWebResponse=(HttpWebResponse)request.GetResponse();
var responseStream=response.GetResponseStream();
使用(var fileStream=newfilestream(“C:\\temp\\myfile.avi”))
{
var buffer=新字节[8192];
while(true)
{
var bytesRead=responseStream.Read(buffer,0,buffer.Length);

如果(bytesRead如果您获得的是大数据,则需要异步使用HttpWebRequest

使用HttpWebRequest.BeginGetResponse()


异步操作完成后,将调用回调函数。您至少需要从此函数调用EndGetResponse()。

对我有效。我将返回整个响应!此代码可以工作,但可能需要一段时间,具体取决于数据量。
 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);
     }
 }
HttpWebRequest webRequest;
void StartWebRequest()
{
   webRequest.BeginGetResponse(new AsyncCallback(FinishWebRequest),null);
}
void FinishWebRequest(IAsyncResult result)
{
   webRequest.EndGetResponse(result);
}