2016-01-13 101 views
0

我正在使用Windows.Web.Http.HttpClient.SendRequestAsync和HttpFormUrlEncodedContent以及一些自定义标头。无法在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

所以你不能真正将标题设置为内容本身。原来,你需要用在HttpRequestMessage的HttpFormUrlEncodedContent,然后将头设置为HttpRequestMessage对象是这样的:

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