2017-08-24 69 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应该是长期的生活。不断初始化和配置它们会对性能产生不利影响。

相关问题