C# 将自定义标头设置为 httpclient 会导致错误,因为标头名称被误用
Posted
技术标签:
【中文标题】C# 将自定义标头设置为 httpclient 会导致错误,因为标头名称被误用【英文标题】:C# Setting custom headers to httpclient gives error as misused header name 【发布时间】:2022-01-13 20:48:32 【问题描述】:我正在尝试设置像这样的自定义标题
x-my-header:somecustomval
content-type:application/vnd.status+json
.
.
.
other headers
我尝试了两种方法,使用标题字典
#1
_httpClient.DefaultRequestHeaders.Clear();
foreach (var h in headers)
_httpClient.DefaultRequestHeaders.Add(h.Key.ToString(), h.Value.ToString());
#2
HttpRequestMessage req = new HttpRequestMessage();
foreach (var h in headers)
req.Headers.Add(h.Key.ToString(), h.Value.ToString());
我在这两种方法中遇到的错误是:
错误的标题名称。确保请求标头与 HttpRequestMessage,带有 HttpResponseMessage 的响应标头,以及 带有 HttpContent 对象的内容标头。
如何在 C# net core 3.1 的 HttpClient 中设置 POST 的标头?可以不设置自定义标题吗?
【问题讨论】:
【参考方案1】:在您的任一尝试中使用HttpHeaders.TryAddWithoutValidation
方法。
在内部,默认的HttpHeaders.Add
将尝试验证您是否添加了已知的 HTTP 标头,如果无效则将失败。
参考HttpHeaders
【讨论】:
谢谢。用方法#1试过了,它奏效了。以上是关于C# 将自定义标头设置为 httpclient 会导致错误,因为标头名称被误用的主要内容,如果未能解决你的问题,请参考以下文章
带有自定义标头的 C# HttpClient POST 请求发送不正确的 Content-Type 标头字段
HttpClient postasync,带有自定义标头和应用程序/json,用于正文 C#