Мне нужно отправлять 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
HttpContent для публикации List> через HttpClient ⇐ C#
Место общения программистов C#
-
Anonymous
1730032089
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/79130579/httpcontent-for-posting-listarraysegmentbyte-via-httpclient[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия