2016-01-13 97 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");