如何在HttpClient上设置默认用户代理?

Tom*_*ner 37 c# asp.net

在HttpRequest上设置用户代理很容易,但我经常想要使用单个HttpClient并且每次都使用相同的用户代理,而不是必须在每个请求上设置它.

Tom*_*ner 83

您可以使用以下方法轻松解决

HttpClient _client = new HttpClient();
_client.DefaultRequestHeaders.Add("User-Agent", "C# App");
Run Code Online (Sandbox Code Playgroud)


Mar*_*ger 23

使用DefaultRequestHeaders.Add(...)对我不起作用.

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (compatible; AcmeInc/1.0");
Run Code Online (Sandbox Code Playgroud)


spo*_*ahn 15

使用JensG 注释

简短补充:UserAgent 类还提供 TryParse,这在没有版本号(无论出于何种原因)时特别方便。RFC 明确允许这种情况。

这个答案上

using System.Net.Http;
Run Code Online (Sandbox Code Playgroud)
using (var httpClient = new HttpClient())
{
    httpClient.DefaultRequestHeaders
      .UserAgent
      .TryParseAdd("Mike D's Agent");
    //User-Agent: Mike D's Agent
}
Run Code Online (Sandbox Code Playgroud)


Jan*_*ski 9

.NET Standard 2.0库中的以下内容对我有用:

HttpClient client = new HttpClient();
ProductHeaderValue header = new ProductHeaderValue("MyAwesomeLibrary", Assembly.GetExecutingAssembly().GetName().Version.ToString());
ProductInfoHeaderValue userAgent = new ProductInfoHeaderValue(header);
client.DefaultRequestHeaders.UserAgent.Add(userAgent);
// User-Agent: MyAwesomeLibrary/1.0.0.0
Run Code Online (Sandbox Code Playgroud)

  • 简短的补充:UserAgent类还提供TryParse,当没有版本号(由于任何原因)时,它特别方便。RFC明确允许这种情况。 (2认同)