将应用默认头到多部分请求的内容(Applying default headers to multi-

2019-10-19 08:14发布

HttpClient具有方便特性DefaultRequestHeaders定义默认标头被包括在任何请求。

我想这适用于网页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有什么让这样做比手动清除请求的头部信息和与客户端的默认值替换它们清洁?

Answer 1:

你可以创建味精后添加循环内以下,

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

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



文章来源: Applying default headers to multi-part request content