Как удалить заголовки Content-Type и User-Agent из запроса HttpClient? - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь создать Http-запрос, используя System.Net.Http.HttpClient в среде xamarin (target: .net standard).Запросы будут периодическими и не будут содержать много данных.По умолчанию все запросы содержат заголовки User-Agent и Content-Type, которые в 4 раза больше, чем тело запроса.Мне не нужно Content-Type, потому что сервер принимает только один тип контента, и он принимает правильный, когда заголовок отсутствует.

Я уже пытался удалить заголовок UserAgent, но тогда по умолчанию все еще остаетсябыть установленным.

HttpClient.DefaultRequestHeaders.UserAgent.Clear();

Я также пытался установить для Content-Type значение null, пустую строку и т. д.:

request.Content = new ByteArrayContent(byteArray);
request.Content.Headers.ContentType = null; //Doesn't work
request.Content.Headers.ContentType = new MediaTypeHeaderValue(null); //Throws exception
request.Content.Headers.ContentType = new MediaTypeHeaderValue(""); //Throws exception

Как создать ожидаемый http-запрос и получить полный контроль над заголовками?

1 Ответ

0 голосов
/ 18 февраля 2019

После дня борьбы я обнаружил, что Xamarin может использовать две разные реализации HttpMessageHandler, который является базовым механизмом, который фактически отправляет запрос:

  • Managed (более старая) - отправляет заголовки какожидается (пусто User-Agent и Content-Type не отправляются.
  • Собственный - по умолчанию и ведет себя как в вопросе.

HttpClient в .NET Coreведет себя как управляемый, поэтому я предполагаю, что это ожидаемое поведение. Проблема на github: https://github.com/xamarin/xamarin-android/issues/2747

Источники:

...