在 getAsync 中为客户端添加标头(在 using 块中)

add header for a client in getAsync (in a using block )

提问人:Rk R Bairi 提问时间:8/25/2017 最后编辑:Rk R Bairi 更新时间:8/25/2017 访问量:974

问:

尝试在此处向客户端变量添加标头属性。C#/窗口窗体的新手。

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");

不知道该放在哪里。尝试添加 using(var client = new HttpClient() { client.addheader('header', 'value') }。但这似乎使客户端超出了下一行代码的范围。

使用 using 指令 C# .NET Winforms

评论

1赞 Servy 8/25/2017
如果只是要阻止结果,则不应调用这些方法的异步版本。如果需要同步行为,只需首先调用这些操作的同步版本即可。
1赞 Crowcoder 8/25/2017
我有一篇关于如何使用 .HttpClient
0赞 Rk R Bairi 8/25/2017
@Servy在调用 http 客户端的异步方法时,我无法添加标头?
0赞 Servy 8/25/2017
@RkRBairi 当然可以,我从来没有说过别的。我刚才说过,如果要同步完成工作,请调用同步方法。如果要异步执行工作,则不要立即同步阻止返回的任务。

答:

2赞 Nkosi 8/25/2017 #1

如果正确布局代码,您将看到变量的作用域。

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

正如评论中提到的,尽量不要阻止(。Result) 在异步代码上。

也应该长寿。不断初始化和处置它们可能会对性能产生不利影响。HttpClient