无法在 HttpFormUrlEncodedContent 上设置 Headers
Cannot set Headers on HttpFormUrlEncodedContent
我正在使用 Windows.Web.Http.HttpClient.SendRequestAsync 和 post HttpFormUrlEncodedContent 以及一些自定义 headers。
尝试时:
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 information: Misused header name. Make sure request headers are
used with HttpRequestMessage, response headers with
HttpResponseMessage, and content headers with HttpContent objects.
如何使用 HttpFormUrlEncodedContent 添加 per-request 自定义 headers?
请注意,虽然我知道 HttpClient.DefaultRequestHeaders,但这不是一个很好的选择,因为我想重用 HttpClient 实例。
所以您实际上无法将 Headers 设置为内容本身。事实证明,您需要将 HttpFormUrlEncodedContent 包装在 HttpRequestMessage 中,然后将 headers 设置为 HttpRequestMessage object,如下所示:
HttpFormUrlEncodedContent content = new HttpFormUrlEncodedContent(requestData);
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, ServiceUri);
req.Content = content;
req.Headers.Add("Custom", "Header");
我正在使用 Windows.Web.Http.HttpClient.SendRequestAsync 和 post HttpFormUrlEncodedContent 以及一些自定义 headers。
尝试时:
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 information: Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.
如何使用 HttpFormUrlEncodedContent 添加 per-request 自定义 headers?
请注意,虽然我知道 HttpClient.DefaultRequestHeaders,但这不是一个很好的选择,因为我想重用 HttpClient 实例。
所以您实际上无法将 Headers 设置为内容本身。事实证明,您需要将 HttpFormUrlEncodedContent 包装在 HttpRequestMessage 中,然后将 headers 设置为 HttpRequestMessage object,如下所示:
HttpFormUrlEncodedContent content = new HttpFormUrlEncodedContent(requestData);
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, ServiceUri);
req.Content = content;
req.Headers.Add("Custom", "Header");