HttpClient vs HttpWebRequest

У меня есть большой файл, который я должен отправить клиенту веб-api... Данные являются многочастными. Проблема в том, что если файл отправляется через http-запрос, он быстро загружается на webapi. Для этого запроса содержимое файла записывается непосредственно через поток запросов.

Где, как если бы тот же файл был отправлен через Httpclient (.net 4.5), загрузка медленна по сравнению с веб-запросом http. Я использую multipartformdatacontent в async post HttpClient.

Итак, для больших файлов нам нужно использовать только веб-запрос? или есть ли какие-либо настройки на Httpclient, которые ускоряют загрузку?

Ответ 1

HttpClient больше похож на браузер без заголовка. Это мощный и идеальный инструмент, если вы собираетесь создавать много запросов HTTP. Например, вы можете установить заголовки и прочее по умолчанию. Вот пять лучших способов, которые он отличается от HttpWebRequest, который берется из here

  • Экземпляр HttpClient - это место для настройки расширений, установки заголовков по умолчанию, отмены выдающихся запросов и т.д.
  • Вы можете задать столько запросов, сколько хотите, через один экземпляр HttpClient.
  • HttpClients не привязаны к определенному HTTP-серверу или хосту; вы можете отправить любой HTTP-запрос, используя тот же экземпляр HttpClient.
  • Вы можете получить HttpClient для создания специализированных клиентов для определенных сайтов или шаблонов.
  • HttpClient использует новый ориентированный на задачи шаблон для обработки асинхронных запросов, что значительно упрощает управление и координацию нескольких невыполненных запросов.

Ответ 2

Я использовал FileStreamContent с httpclient... Но когда я использовал ByteArrayContent, он работал нормально.

Я не уверен, как и почему это имеет значение, но отправка байтов по потоку является лучшим способом, а не отправкой потока