【问题标题】:Cannot set Headers on HttpFormUrlEncodedContent无法在 HttpFormUrlEncodedContent 上设置标头
【发布时间】:2016-01-13 10:09:34
【问题描述】:

我正在使用 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 实例。

【问题讨论】:

    标签: c# httpclient


    【解决方案1】:

    因此,您实际上无法将 Headers 设置为 Content 本身。原来您需要将 HttpFormUrlEncodedContent 包装在 HttpRequestMessage 中,然后将标头设置为 HttpRequestMessage 对象,如下所示:

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

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2015-05-05
      • 2019-04-29
      相关资源
      最近更新 更多