'How do I set a default User Agent on an HttpClient?
It's easy to set a user agent on an HttpRequest, but often I want to use a single HttpClient and use the same user agent every time, rather than having to set it on each request.
Solution 1:[1]
Using DefaultRequestHeaders.Add(...)
did not work for me.
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (compatible; AcmeInc/1.0)");
Solution 2:[2]
The following worked for me in a .NET Standard 2.0 library:
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
Solution 3:[3]
Using JensG comment
Short addition: The UserAgent class also offers TryParse, which comes especially handy when there is no version number (for whatever reason). The RFC explicitly allows this case.
on 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
}
Solution 4:[4]
string agent="ClientDemo/1.0.0.1 test user agent DefaultRequestHeaders";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", agent);
remark: use this structure to generate the agent name User-Agent: product / product-version comment
- product: Product identifier
- product-version: Product version number.
- comment: None or more of the infomation Comments containing product, for example.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Jan Bo?kowski |
Solution 3 | |
Solution 4 | Felipe Silva Alvarez |