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

时间:2019-02-17 16:29:09

标签: http-headers dotnet-httpclient

我正在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请求并完全控制标题?

1 个答案:

答案 0 :(得分:1)

经过一天的努力,我发现Xamarin可以使用HttpMessageHandler的两种不同实现,这是实际发送请求的基础机制:

  • 托管(较旧的托管服务器)-发送标头,如预期的那样(未发送空User-AgentContent-Type
  • 本地-是默认值,其行为与问题中的行为类似。
.NET Core中的

HttpClient的行为类似于托管对象,因此我认为这是预期的行为。 在github上发布:https://github.com/xamarin/xamarin-android/issues/2747

来源: