C# 如何将System.IO.Stream放入控制台?

C# 如何将System.IO.Stream放入控制台?,c#,C#,我从这里得到了一个System.IO.Stream HttpClient client = new HttpClient(); HttpContent content = new StringContent(requestBody, Encoding.UTF8, "application/json"); var webRequest = new HttpRequestMessage(HttpMethod.Post, targetUrl); webRequest.Content

我从这里得到了一个
System.IO.Stream

HttpClient client = new HttpClient();
HttpContent content = new StringContent(requestBody, Encoding.UTF8, "application/json");
var webRequest = new HttpRequestMessage(HttpMethod.Post, targetUrl);
webRequest.Content = content;
var response = client.Send(webRequest);
现在我想用我的眼睛看看这个反应是什么。我试过:

Console.WriteLine(response.Content);
当然,那太容易了,所以它不起作用

然后

没有骰子,只是一个空字符串

甚至试着去创造

response.Content.CopyTo(Console);
但这甚至不能编译


我唯一要做的就是
Console.WriteLine(“Headers”+response.Headers.ToString())并且它有一个
内容长度
,因此我期待一些东西。

您应该检查内容长度标题,并验证是否确实有内容要从内容流读取:

response.Content.Headers.ContentLength
也许您正在使用另一个API读取响应的内容,因此将流位置保留在流的末尾?您可以尝试查找开始,然后读取流:

stream.Seek(0,SeekOrigin.Begin);
有多种方式可以读取流内容,其中一些您已经尝试过:

使用System.IO;
使用系统文本;
使用System.Threading.Tasks;
//流阅读器
使用var reader=newstreamreader(stream,Encoding.UTF8);
Console.WriteLine(reader.ReadToEnd());
//Stream.CopyTo
stream.CopyTo(Console.OpenStandardOutput());
//流,读
var length=(int)response.Content.Headers.ContentLength;
var buffer=新字节[长度];
var count=stream.Read(buffer,0,buffer.Length);
var text=Encoding.UTF8.GetString(缓冲区,0,计数);
控制台写入线(文本);
//HttpContent.ReadAsStringAsync
var text=await response.Content.ReadAsStringAsync();
控制台写入线(文本);
//HttpContent.ReadAsByteArrayAsync
var buffer=await response.Content.ReadAsByteArrayAsync();
var text=Encoding.UTF8.GetString(buffer,0,buffer.Length);
控制台写入线(文本);

您应该检查内容长度标题,并验证是否确实存在要从内容流读取的内容:

response.Content.Headers.ContentLength
也许您正在使用另一个API读取响应的内容,因此将流位置保留在流的末尾?您可以尝试查找开始,然后读取流:

stream.Seek(0,SeekOrigin.Begin);
有多种方式可以读取流内容,其中一些您已经尝试过:

使用System.IO;
使用系统文本;
使用System.Threading.Tasks;
//流阅读器
使用var reader=newstreamreader(stream,Encoding.UTF8);
Console.WriteLine(reader.ReadToEnd());
//Stream.CopyTo
stream.CopyTo(Console.OpenStandardOutput());
//流,读
var length=(int)response.Content.Headers.ContentLength;
var buffer=新字节[长度];
var count=stream.Read(buffer,0,buffer.Length);
var text=Encoding.UTF8.GetString(缓冲区,0,计数);
控制台写入线(文本);
//HttpContent.ReadAsStringAsync
var text=await response.Content.ReadAsStringAsync();
控制台写入线(文本);
//HttpContent.ReadAsByteArrayAsync
var buffer=await response.Content.ReadAsByteArrayAsync();
var text=Encoding.UTF8.GetString(buffer,0,buffer.Length);
控制台写入线(文本);

我原本希望将其作为流读取的版本能够正常工作。。。您是否查看了内容长度以检查是否确实存在某些内容?因为您可能正在处理文本而不是二进制文件,所以我将使用
StreamReader
Read(…)Write(…)
循环复制到
控制台。Out
这样编码就可以工作了。我本来希望作为流从中读取的版本可以工作。。。您是否查看了内容长度以检查是否确实存在一些内容?因为您可能正在处理文本而不是二进制文件,所以我将使用
StreamReader
Read(…)Write(…)
循环复制到
控制台。Out
这样编码就可以工作了。非常好,谢谢完美,谢谢
response.Content.CopyTo(Console);