2017-08-24 68 views
2

嘗試在此處向客戶端變量添加標頭屬性。新的C#/窗體窗體。爲getAsync中的客戶端添加標頭(在使用塊中)

using (var client = new HttpClient()) 
using (var response = client.GetAsync(page).Result) 
using (var content = response.Content) { 
      response = content.readAsStringAsync().Result(); 
     } 

我想添加一個頭到上面的代碼。

client.DefaultRequestHeaders.Add("myHeader", "value"); 

不知道該把它放在哪裏。嘗試添加使用(var client = new HttpClient(){client.addheader('header','value')}。但是,這似乎使客戶端在下面的代碼行中超出範圍

+1

您應該如果您只是要阻止結果,則不要調用這些方法的異步版本。如果你想要同步行爲,只需調用這些操作的同步版本即可。 – Servy

+1

[我有博客文章](https://contrivedexample.com/2017/07/01/using-httpclient-as-it-was-intended-because-youre-not/)瞭解如何使用「HttpClient」。 – Crowcoder

+0

@Servy在調用http客戶端的異步方法時無法添加頭文件? –

回答

2

如果您佈局正確的代碼,你會看到在哪裏範圍的變量。

using (var client = new HttpClient()) { 
    client.DefaultRequestHeaders.Add("myHeader", "value"); 
    using (var response = await client.GetAsync(page)) {   
     var result = await response.Content.ReadAsStringAsync(); 
    } 
} 

正如在評論中提到儘量不要阻止(。結果)的異步代碼。

而且HttpClient應該是長期的生活。不斷初始化和配置它們會對性能產生不利影響。

相關問題