- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将以下读取 HttpContent 的完整字符串响应的代码转换为字符串,以仅读取特定的最大字符数。现有代码:
private static async Task<string> GetContentStringAsync(HttpContent content)
{
string responseContent = await content.ReadAsStringAsync().ConfigureAwait(false);
return responseContent;
}
我现在的代码:
private static async Task<string> GetContentStringAsync(HttpContent content, int ResponseContentMaxLength)
{
string responseContent;
Stream responseStream = await content.ReadAsStreamAsync().ConfigureAwait(false);
using (StreamReader streamReader = new StreamReader(responseStream))
{
// responseContent = Data from streamReader until ResponseContentMaxLength
}
return responseContent;
}
我是 StreamReader 和 HttpContent 操作的新手。有没有办法做到这一点?
最佳答案
有多种方法可以做到这一点。但是,恕我直言,最简单的方法之一是创建一个 MemoryStream
,您已在其中读取了所需的确切字节数,然后从该流中读取 StreamReader
对象而不是原来的。
例如:
private static async Task<string> GetContentStringAsync(HttpContent content, int ResponseContentMaxLength)
{
string responseContent;
Stream responseStream = await content.ReadAsStreamAsync().ConfigureAwait(false);
int totalBytesRead = 0;
byte[] buffer = new byte[ResponseContentMaxLength];
while (totalBytesRead < buffer.Length)
{
int bytesRead = await responseStream
.ReadAsync(buffer, totalBytesRead, buffer.Length - totalBytesRead);
if (bytesRead == 0)
{
// end-of-stream...can't read any more
break;
}
totalBytesRead += bytesRead;
}
MemoryStream tempStream = new MemoryStream(buffer, 0, totalBytesRead);
using (StreamReader streamReader = new StreamReader(tempStream))
{
// responseContent = Data from streamReader until ResponseContentMaxLength
}
return responseContent;
}
以上当然假设 ResponseContentMaxLength
的值足够小,因此分配一个足够大的 byte[]
来临时存储那么多字节是合理的。由于返回的内容规模相当,这似乎是一个合理的假设。
但是如果您不想维护额外的缓冲区,另一种方法是编写一个 Stream
类,它只从底层流对象中读取您指定的字节数,然后将其实例(使用 ResponseContentMaxLength
值初始化)传递给 StreamReader
对象。与上述相比,这是相当多的额外工作。 (不过,我想因为这是一个非常有用的对象,可能已经有一个公开可用的实现......我知道我自己至少写过几次类似的东西,我只是碰巧手边没有代码那一刻)。
关于c# - 使用 StreamReader 读取 HttpContent 流直到字符限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015479/
我需要在 JavaScript 中的笛卡尔坐标和球坐标之间进行转换。我在论坛上浏览了一下,没有找到我要找的东西。 现在我有这个: this.rho = sqrt((x*x) + (y*y) + (z*
有没有matrix3d可以像这样把矩形变成梯形的?我知道常规的 2d 矩阵变换只能以平行四边形结束,因为您只能有效地倾斜和旋转。 div { width: 300px; height:
关于这个例子(d3.j radial tree node links different sizes),我想知道是否可以在 d3.js 中混合径向树和直线树。 对于我的 jsFiddle 示例:htt
我尽量把标题写得最好,但我不确定如何准确描述这里发生的事情,所以请随时更正。 我想使用 › 直 Angular 引号 (›) 而不是 > 直 Angular 引号 (>),虽然 › 字符比 > 短,但
我正在尝试使用 CSS 创建一个具有圆边的矩形棱柱,如下图所示。 到目前为止,我已经指定了顶部和底部的边界半径。问题是我不知道如何让另一边的左右边缘向内 curl 。因此,拐 Angular 处不应有
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 去年关闭。 社区去年审查了是否重
首先,我刚刚开始学习 HTML 和 CSS。 我想如何使用这段代码: https://codepen.io/martinjkelly/pen/vEOBvL .container { width:
我是一名优秀的程序员,十分优秀!