Come impostare il referrer su HtmlWeb in HtmlAgilityPack

c# html-agility-pack

Domanda

Voglio assegnare una dinamica (nel senso che il referrer cambia in base all'URL della richiesta.

Non riesco a trovare una proprietà Referrer o Headers . Tutto quello che posso vedere è PreRequest , a cui posso aggiungere un gestore. C'è un altro modo per passare un referrer al gestore senza utilizzare una variabile 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;
    }

Risposta accettata

C'è un altro modo per passare un referrer al gestore senza utilizzare una variabile globale?

Puoi usare le variabili catturate . Vedi, per esempio, questo link "Capire la cattura variabile in C #" o questa chiusura e variabile catturata C #

Ora puoi farlo

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

Alcune note:

Quali sono le chiusure?

Le chiusure sono funzioni che possono essere memorizzate in una variabile, passate come parametri e si riferiscono alle variabili visibili al momento della loro definizione.

Variabile catturata

La variabile esterna a cui fa riferimento la chiusura è detta variabile acquisita



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché