如何从HttpClient请求中删除Content-Type和User-Agent标头?

问题描述 投票:1回答:1

我正在尝试使用xamarin(目标:.net标准)环境中的System.Net.Http.HttpClient创建Http请求。请求将是定期的,不会包含太多数据。默认情况下,所有请求都包含User-AgentContent-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请求并完全控制标题?

http-headers dotnet-httpclient
1个回答
1
投票

经过一天的奋斗,我发现,Xamarin可以使用两种不同的HttpMessageHandler实现,这是实际发送请求的底层机制:

  • 管理(较旧的) - 发送标头像预期(空User-AgentContent-Type没有被发送。
  • Native - 是默认值,并且在问题中表现得像。

.NET Core中的HttpClient表现得像托管一样,所以我认为这是预期的行为。关于github的问题:https://github.com/xamarin/xamarin-android/issues/2747

资料来源:

© www.soinside.com 2019 - 2024. All rights reserved.