2014-02-12 66 views
1

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有什麼比使用客戶端的默認值手動清除請求的標題更清潔的方法嗎?

回答

1

你可以創建味精後添加循環內以下,

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

這將默認的標題合併到郵件標題。

+0

這正是我現在正在做的!但這是一個很好的答案。 –

+0

@CoryNelson不幸的是,我還沒有發現任何暴露頭複製功能的庫。他們有內部的代碼,但沒有公開訪問。 –

+0

是的,我想在某處可能有一個像'client.CreateResponse()'這樣的擴展方法。 –