using var handler = new HttpClientHandler
{
    UseProxy = true,
    Proxy = new WebProxy("http://proxy.example:8080")
};
using var client = new HttpClient(handler);

string html = await client.GetStringAsync(
    "https://www.example.com/catalog");
var document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(html);

Dette moderne .NET-utdraget bruker System.Net og System.Net.Http. Den konfigurerte klienten styrer nettverksrutingen, og Html Agility Pack mottar HTML-strengen som returneres. Behold en fornuftig konfigurert klient for løpende arbeid i stedet for å bygge opp igjen bassengene for hver side.

For dette eksempelet med en offentlig side kan en uautentisert kandidat fra HTTP-proxylisten erstatte mellomleddet. Bytt ut destinasjonen separat. Nettstedets URL beholder sin TLS-identitet. Autentiserte proxy-påloggingsdata hører hjemme på WebProxy; verken nettstedets påloggingsdata eller deaktivert verifisering erstatter dem.

GetStringAsync behandler HTTP-statuser uten suksess som feil. Ikke gjør en mislykket nedlasting om til et tomt HtmlDocument. Hvis applikasjonen trenger headere, statusdetaljer eller en feiltekst, bruk en responsorientert HTTP-operasjon og undersøk den før parsing.

Strengmetoden unngår en ubetinget ekstra UTF-8-konvertering av rå byte. Hvis du bevisst henter byte, må kravene til svar- og dokumentkoding følge med inn i dekodingen.

LoadHtml produserer et parset dokument; det kjører ikke skript, laster ikke stiler og følger ikke lenker. Løs påfølgende relative lenker mot svarets plassering, og husk at elementer nettleseren rendrer kan mangle i den nedlastede kilden. Hvert svar bør gi sitt eget dokument selv når forespørsler deler den samme konfigurerte HTTP-klienten.

Relaterte artikler