HttpContent для публикации List> через HttpClientC#

Место общения программистов C#
Ответить
Anonymous
 HttpContent для публикации List> через HttpClient

Сообщение Anonymous »

Мне нужно отправлять HTTP-запросы API, тела которых заданы в виде List (обычный фиксированный заголовок + переменный средний + фиксированный нижний колонтитул). Сокет .NET может отправлять List с незапамятных времен, но я не могу найти аналогичную функциональность в контексте .NET HttpClient.
Чтобы отправить тело, HttpClient требуется HttpRequestMessage, где тело для отправки указано в свойстве Content (типа HttpContent).
Ни HttpContent, ни какой-либо из у его потомков есть конструктор, который принимает List или что-то подобное; они имеют дело только с одним фрагментом массива. То же самое относится и к MemoryStream, который в противном случае мог бы использоваться через одного из потомков HttpContent.
На данный момент перспектива кажется мрачной: я мог бы либо объединить фрагменты тела в однобайтовый буфер для отправки или реализовать HttpContent поверх List.
Ни один из вариантов не кажется особенно привлекательным. Тело сообщения может иметь размер десятков мегабайт, поэтому ненужное копирование создаст ненужную нагрузку на подсистему памяти и снизит производительность (сервер находится на том же физическом хосте и доступен либо через устройство обратной связи, либо через виртуальные сетевые адаптеры). HttpContent и MemoryStream имеют неоправданно большие и сложные API, которые сложно реализовать.
Есть ли более простой способ публикации List< /код>? Если нет, знает ли кто-нибудь из опыта, какой путь менее болезненный — реализация HttpContent или реализация MemoryStream? (Последний имеет немного больший API, но он кажется более простым и понятным.)
P.S.: чтобы представить ситуацию в контексте: я переделываю инструмент, который мы используем. для измерения производительности API-сервера, а также для функционального и нагрузочного тестирования; в настоящее время он основан на API .NET Socket, но использование простых TCP-сокетов фактически ограничивает его HTTP 1.1. Здесь на помощь приходит HttpClient.

Подробнее здесь: https://stackoverflow.com/questions/791 ... httpclient
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»