我正在使用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实例。
答案 0 :(得分:0)
所以你实际上无法将Headers设置为Content本身。事实证明你需要在HttpRequestMessage中包装HttpFormUrlEncodedContent,然后将标题设置为HttpRequestMessage对象,如下所示:
HttpFormUrlEncodedContent content = new HttpFormUrlEncodedContent(requestData);
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, ServiceUri);
req.Content = content;
req.Headers.Add("Custom", "Header");