c# - 渲染/反序列化 http 请求
问题描述
我是 C# 新手,不知道如何呈现 http 请求。我试图理解我在下面分享的一段代码,但不明白其中发生了什么。如果有人可以帮助代码尝试执行的操作,并且如果有一种方法可以更有效地执行此操作,而不是编写 50 行代码,那将会很有帮助。
StringBuilder builder = new StringBuilder();
byte[] buffer = ArrayPool<byte>.Shared.Rent(4096);
List<string> results = new List<string>();
while (true)
{
// Request is http request
var bytesRemaining = await this.Request.Body.ReadAsync(buffer, offset: 0, buffer.Length).ConfigureAwait(false);
if (bytesRemaining == 0)
{
results.Add(builder.ToString());
break;
}
// Instead of adding the entire buffer into the StringBuilder
// only add the remainder after the last \n in the array.
var prevIndex = 0;
int index;
while (true)
{
index = Array.IndexOf(buffer, (byte)'\n', prevIndex);
if (index == -1)
{
break;
}
var encodedString = Encoding.UTF8.GetString(buffer, prevIndex, index - prevIndex);
if (builder.Length > 0)
{
// If there was a remainder in the string buffer, include it in the next string.
results.Add(builder.Append(encodedString).ToString());
builder.Clear();
}
else
{
results.Add(encodedString);
}
// Skip past last \n
prevIndex = index + 1;
}
var remainingString = Encoding.UTF8.GetString(buffer, prevIndex, bytesRemaining - prevIndex);
builder.Append(remainingString);
}
解决方案
推荐阅读
- apache-spark - 将 sql-spark-connector 库安装到 Azure Synapse Apache Spark
- c# - 如何获取 csv 字符串格式的子表项的计数
- arrays - 单个元素的低阶 Spark Dataframe Array 连接
- c# - 我想使用 LINQ 获得最常见的值
- xslt - 在 XSL 中的两个日期之间计算
- latex - Biblatex 再次显示同一作者而不是“-”
- r - 将不同大小的命名向量合并到数据框中
- ansible - 无法访问 jinja 中的字典值
- python - 输入/输出到/从控制台
- javascript - 使用 match 将路由器 dom 与 Typescript 反应