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

时间:2017-05-19 18:42:28

标签: c# asp.net

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

5 个答案:

答案 0 :(得分:66)

您可以使用以下方法轻松解决此问题:

HttpClient _client = new HttpClient();
_client.DefaultRequestHeaders.Add("User-Agent", "C# App");

答案 1 :(得分:19)

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

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (compatible; AcmeInc/1.0");

答案 2 :(得分:12)

使用JensG comment

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

this answer

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

答案 3 :(得分:5)

以下内容在.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

答案 4 :(得分:0)

string agent="ClientDemo/1.0.0.1 test user agent DefaultRequestHeaders";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", agent);

备注:使用此结构生成代理名称 User-Agent:产品/产品版本评论

<块引用>
  • product:产品标识符
  • product-version:产品版本号。
  • comment:例如,没有或多个包含产品的信息评论。

references