【发布时间】:2017-05-19 18:42:28
【问题描述】:
在 HttpRequest 上set a user agent 很容易,但通常我想使用单个 HttpClient 并每次都使用相同的用户代理,而不是必须在每个请求上设置它。
【问题讨论】:
在 HttpRequest 上set a user agent 很容易,但通常我想使用单个 HttpClient 并每次都使用相同的用户代理,而不是必须在每个请求上设置它。
【问题讨论】:
您可以使用以下方法轻松解决此问题:
HttpClient _client = new HttpClient();
_client.DefaultRequestHeaders.Add("User-Agent", "C# App");
【讨论】:
使用DefaultRequestHeaders.Add(...) 对我不起作用。
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (compatible; AcmeInc/1.0)");
【讨论】:
以下内容在 .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
【讨论】:
UserAgent 类还提供了TryParse,当没有版本号(无论出于何种原因)时,它特别方便。 RFC 明确允许这种情况。
补充一点:UserAgent 类还提供 TryParse,当没有版本号(无论出于何种原因)时,它会特别方便。 RFC 明确允许这种情况。
using System.Net.Http;
using (var httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders
.UserAgent
.TryParseAdd("Mike D's Agent");
//User-Agent: Mike D's Agent
}
【讨论】:
string agent="ClientDemo/1.0.0.1 test user agent DefaultRequestHeaders";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", agent);
备注:使用此结构生成代理名称 User-Agent:产品/产品版本评论
- 产品:产品标识符
- product-version:产品版本号。
- comment:例如,一个或多个包含产品的信息评论。
【讨论】: