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);

Ovaj moderni .NET fragment koristi System.Net i System.Net.Http. Konfigurirani klijent upravlja mrežnim usmjeravanjem, a Html Agility Pack prima vraćeni HTML niz. Zadržite prikladno konfiguriran klijent za tekući rad umjesto ponovne izgradnje njegovih bazena za svaku stranicu.

Za ovaj primjer javne stranice, neautentificirani kandidat s liste HTTP proxyja može zamijeniti posrednika. Zamijenite odredište odvojeno. URL web-stranice zadržava svoj TLS identitet. Autentificirani proxy podaci pripadaju WebProxyju; ni podaci web-stranice ni onemogućena provjera ne zamjenjuju ih.

GetStringAsync tretira neuspješne HTTP statuse kao greške. Ne pretvarajte neuspjelo preuzimanje u prazan HtmlDocument. Ako aplikaciji trebaju zaglavlja, pojedinosti statusa ili tijelo greške, upotrijebite HTTP operaciju usmjerenu na odgovor i pregledajte je prije parsiranja.

Metoda niza izbjegava bezuvjetnu dodatnu UTF-8 pretvorbu sirovih bajtova. Ako namjerno dohvaćate bajtove, prenesite zahtjeve za kodiranjem odgovora i dokumenta u dekodiranje.

LoadHtml proizvodi parsirani dokument; ne izvršava skripte, ne učitava stilove niti slijedi poveznice. Razriješite naknadne relativne poveznice prema lokaciji odgovora i zapamtite da elementi koje prikazuje preglednik mogu izostati iz preuzetog izvora. Svaki odgovor treba proizvesti vlastiti dokument čak i kada zahtjevi dijele isti konfigurirani HTTP klijent.

Povezani članci