将默认标头应用于多部分请求内容

时间:2014-02-12 16:40:13

标签: c# .net asp.net-web-api dotnet-httpclient

HttpClient有一个便利属性DefaultRequestHeaders,用于定义要包含在任何请求中的默认标头。

我正在尝试将此应用于Web API中的批处理支持,但我注意到这些默认标头未应用于多部分HttpMessageContent请求:

var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Some-Header, "foobar");

var batchContent = new MultipartContent("mixed");

foreach(var x in something)
{
    // these inner requests don't get default headers.
    HttpRequestMessage msg = MakeRequestFromSomething(x);
    batchContent.Add(new HttpMessageContent(msg));
}

// only this outer one does.
var results = await client.PostAsync("/batch", batchContent);

这种行为很有意义,但我仍在寻找一种方法将标头应用于内部请求。 HttpClient或Web API有什么可以比手动清除请求的标题并用客户端的默认值替换它们更干净吗?

1 个答案:

答案 0 :(得分:1)

创建msg后,您可以在循环中添加以下内容,

foreach (var header in client.DefaultRequestHeaders)
{
     msg.Headers.Remove(header.Key);
     msg.Headers.TryAddWithoutValidation(header.Key, header.Value);
}

这会将默认标头合并到邮件标头中。

相关问题