c# - 如何将 System.IO.Stream 放入控制台?
问题描述
我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);
当然,这太容易了,所以它不起作用。
然后
var f___ = new System.IO.StreamReader(response.Content.ReadAsStream()).ReadToEnd();
Console.WriteLine("Response: " + f___);
没有骰子,只有一个空字符串。
甚至试图发挥创造力...
response.Content.CopyTo(Console);
但这甚至无法编译。
我唯一要工作的是Console.WriteLine("Headers " + response.Headers.ToString());
,它有一个content-length
,所以我期待一些东西。
解决方案
您应该检查Content-Length标头并验证是否确实有要从内容流中读取的内容:
response.Content.Headers.ContentLength
也许您正在使用另一个 API 读取响应的内容,因此将流位置留在流的末尾?您可以尝试寻找开头然后阅读流:
stream.Seek(0, SeekOrigin.Begin);
有多种方法可以读取流内容,其中一些您已经尝试过:
using System.IO;
using System.Text;
using System.Threading.Tasks;
// StreamReader
using var reader = new StreamReader(stream, Encoding.UTF8);
Console.WriteLine(reader.ReadToEnd());
// Stream.CopyTo
stream.CopyTo(Console.OpenStandardOutput());
// Stream.Read
var length = (int) response.Content.Headers.ContentLength;
var buffer = new byte[length];
var count = stream.Read(buffer, 0, buffer.Length);
var text = Encoding.UTF8.GetString(buffer, 0, count);
Console.WriteLine(text);
// HttpContent.ReadAsStringAsync
var text = await response.Content.ReadAsStringAsync();
Console.WriteLine(text);
// HttpContent.ReadAsByteArrayAsync
var buffer = await response.Content.ReadAsByteArrayAsync();
var text = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
Console.WriteLine(text);
推荐阅读
- python - 如何连接 Numpy 的 ndarray 来存储对象?
- javascript - iOS13 getUserMedia 不适用于 chrome 和 edge
- c - 谁能告诉我为什么我得到一个分段错误(cs50替换)
- amazon-web-services - 如何实现 aws chime 实时与会者状态?
- python - C#程序无法识别python脚本中的配置文件
- java - 尝试使用 SpringUtilities 类制作CompactGrid 时,java swing 中的“没有这样的孩子”意味着什么
- regex - 正则表达式中的 `(\S.*\S)` 和 `^\s*(.*)\s*$` 有什么区别?
- c# - Google Console API 的 OAuth 问题
- android-studio - ListView 是 Android Studio 5 中的旧版,我正在尝试做可滚动列表,那么要使用什么?
- python-3.x - 如何在python中对我的规范化数据制作直方图?