无法在 HttpFormUrlEncodedContent 上设置标头

Posted

技术标签:

【中文标题】无法在 HttpFormUrlEncodedContent 上设置标头【英文标题】:Cannot set Headers on HttpFormUrlEncodedContent 【发布时间】:2016-01-13 10:09:34 【问题描述】:

我正在使用 Windows.Web.Http.HttpClient.SendRequestAsync 并发布带有一些自定义标头的HttpFormUrlEncodedContent。

尝试时:

HttpClient httpClient = new HttpClient();

IList<KeyValuePair<string, string>> requestData = new List<KeyValuePair<string, string>>();
requestData.Add(new KeyValuePair<string, string>("form", "content"));
HttpFormUrlEncodedContent request = new HttpFormUrlEncodedContent(requestData);

request.Headers.TryAppendWithoutValidation("Custom", "Header");

我得到异常:

WinRT 信息:错误使用的标头名称。确保请求标头是 与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage,以及带有 HttpContent 对象的内容标头。

如何使用 HttpFormUrlEncodedContent 添加每个请求的自定义标头?

请注意,虽然我知道 HttpClient.DefaultRequestHeaders,但这不是一个选择,因为我想重用 HttpClient 实例。

【问题讨论】:

【参考方案1】:

因此,您实际上无法将 Headers 设置为 Content 本身。原来您需要将 HttpFormUrlEncodedContent 包装在 HttpRequestMessage 中,然后将标头设置为 HttpRequestMessage 对象,如下所示:

HttpFormUrlEncodedContent content = new HttpFormUrlEncodedContent(requestData);
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, ServiceUri);
req.Content = content;
req.Headers.Add("Custom", "Header");

【讨论】:

以上是关于无法在 HttpFormUrlEncodedContent 上设置标头的主要内容,如果未能解决你的问题,请参考以下文章

无法在 SQL Server 视图中使用工作查询:“IS”无法识别“>”无法识别

无法在春季导入 org.apache.poi,因此无法编译

无法理解为啥计算在没有手表的情况下无法工作

React 无法编译模块未找到:无法在listingDetail 上解析

为啥 Today Widget 在 iOS 14 上显示“无法加载”且无法调试?

“无法在此文件中预览 - 无法启动 [应用程序名称]”