C# 将自定义标头设置为 httpclient 会出现错误,因为标头名称被误用

use*_*358 5 c# .net-core

我正在尝试设置像这样的自定义标头

x-my-header:somecustomval
content-type:application/vnd.status+json
.
.
.
other headers
Run Code Online (Sandbox Code Playgroud)

我尝试了两种方法,使用标题字典

#1

_httpClient.DefaultRequestHeaders.Clear();

foreach (var h in headers)
{
  _httpClient.DefaultRequestHeaders.Add(h.Key.ToString(), h.Value.ToString());
}
Run Code Online (Sandbox Code Playgroud)

#2

HttpRequestMessage req = new HttpRequestMessage();

foreach (var h in headers)
{
  req.Headers.Add(h.Key.ToString(), h.Value.ToString());
}
Run Code Online (Sandbox Code Playgroud)

我在这两种方法中遇到的错误是:

误用标头名称。确保请求标头与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage 一起使用,内容标头与 HttpContent 对象一起使用。

如何在 C# net core 3.1 中的 HttpClient 中设置 POST 的标头?不能设置自定义标题吗?

Nko*_*osi 9

HttpHeaders.TryAddWithoutValidation在您的任何一次尝试中使用该方法。

在内部,默认值HttpHeaders.Add将尝试验证您是否正在添加已知的 HTTP 标头,如果无效,则会失败。

参考HttpHeaders