105 votes

Comment définir un agent utilisateur par défaut sur un HttpClient ?

C'est facile de définir un agent utilisateur sur un HttpRequest, mais souvent je veux utiliser un seul HttpClient et utiliser le même agent utilisateur à chaque fois, plutôt que de devoir le définir sur chaque requête.

155voto

Tom Warner Points 978

Vous pouvez résoudre ce problème facilement en utilisant :

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

108voto

Martin Meixger Points 914

Utilisation de DefaultRequestHeaders.Add(...) n'a pas fonctionné pour moi.

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

19voto

Jan Bońkowski Points 328

Ce qui suit a fonctionné pour moi dans une bibliothèque .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 votes

Petite addition : Le site UserAgent La classe offre également TryParse qui est particulièrement pratique lorsqu'il n'y a pas de numéro de version (pour une raison quelconque). La RFC autorise explicitement ce cas.

18voto

spottedmahn Points 4439

Utilisation de Commentaire de JensG

Bref ajout : La classe UserAgent propose également TryParse, qui s'avère particulièrement pratique lorsqu'il n'existe pas de numéro de version (pour une raison quelconque). La RFC autorise explicitement ce cas.

sur cette réponse

using System.Net.Http;

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

0voto

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

remarque : utiliser cette structure pour générer le nom de l'agent User-Agent : commentaire produit / produit-version

  • produit : Identifiant du produit
  • version du produit : Numéro de version du produit.
  • commentaire : Aucune ou plusieurs des informations Commentaires contenant le produit, par exemple.

références

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X