Comment définir le référent sur HtmlWeb dans HtmlAgilityPack

c# html-agility-pack

Question

Je souhaite affecter une dynamique (signifiant que le référent change en fonction de l'URL de la demande.

Je ne parviens pas à trouver une propriété Referrer ou Headers . Tout ce que je peux voir, c'est PreRequest , auquel je peux ajouter un gestionnaire. Existe-t-il un autre moyen de passer un référent au gestionnaire sans utiliser de variable globale?

   void SomeMethod()
   {
     ....
      var referrer = "some URL";
      //web.Referrer = referrer;  Ideal way, but not possible
      web.PreRequest += OnPreRequest;
      ....
   }

    bool OnPreRequest(HttpWebRequest req)
    {
        req.Referer = ??; //how to know the referrer address here?
        return false;
    }

Réponse acceptée

Existe-t-il un autre moyen de passer un référent au gestionnaire sans utiliser de variable globale?

Vous pouvez utiliser des variables capturées . Voir, par exemple, ce lien "Comprendre la capture de variables en C #" ou les fermetures et la variable capturée C #

Maintenant tu peux faire

void SomeMethod()
{
    var referrer = "some URL";
    web.PreRequest += (req){
        req.Referer = referrer;
        return false;
    };
}

Quelques notes:

Que sont les fermetures?

Les fermetures sont des fonctions qui peuvent être stockées dans une variable, transmises comme paramètre et faisant référence aux variables visibles au moment de leur définition.

Variable capturée

La variable externe référencée par la fermeture est appelée variable capturée




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi