StreamContent
StreamContent читает поток
с текущей позиции. Поток
MemoryStream с UTF-8
"abcde" в начале даёт текст
"abcde". Если позиция
в конце, чтение пустое - в примерах
поток остаётся в начале.
Синтаксис
var stream = new MemoryStream(Encoding.UTF8.GetBytes("abcde"));
var content = new StreamContent(stream);
Пример
Давайте прочитать тело строкой:
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var stream = new MemoryStream(
Encoding.UTF8.GetBytes("abcde"));
var content = new StreamContent(stream);
string res = await content.ReadAsStringAsync();
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте прочитать через StreamReader:
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var stream = new MemoryStream(
Encoding.UTF8.GetBytes("abcde"));
var content = new StreamContent(stream);
using Stream body = await content.ReadAsStreamAsync();
using StreamReader reader = new StreamReader(body);
string res = await reader.ReadToEndAsync();
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте узнать длину прочитанных байт:
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var stream = new MemoryStream(
Encoding.UTF8.GetBytes("abcde"));
var content = new StreamContent(stream);
byte[] data = await content.ReadAsByteArrayAsync();
int res = data.Length;
Console.WriteLine(res);
}
}
Результат выполнения кода:
5
Смотрите также
-
ReadAsStreamAsync,
поток тела -
ByteArrayContent,
массив байт -
StringContent,
строка -
HttpContent,
базовый класс