首页 文章

无法在HttpFormUrlEncodedContent上设置标头

提问于
浏览
0

我正在使用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信息:未使用的 Headers 名称 . 确保请求标头与HttpRequestMessage一起使用,响应标头与HttpResponseMessage一起使用,内容标头与HttpContent对象一起使用 .

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

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

1 回答

  • 0

    因此,您实际上无法将Headers设置为内容本身 . 事实证明你需要在HttpRequestMessage中包装HttpFormUrlEncodedContent,然后将头设置为HttpRequestMessage对象,如下所示:

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

相关问题