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

Ta sodobni fragment .NET uporablja System.Net in System.Net.Http. Konfigurirani odjemalec upravlja omrežno usmerjanje, Html Agility Pack pa prejme vrnjeni niz HTML. Za tekoče delo obdržite ustrezno konfiguriranega odjemalca, namesto da bi njegove bazene za vsako stran znova zgradili.

Za ta primer javne strani lahko neoverjen kandidat s seznama proxyjev HTTP nadomesti posrednika. Cilj zamenjajte ločeno. URL spletnega mesta ohrani svojo identiteto TLS. Overjene poverilnice proxyja spadajo v WebProxy; nadomestijo jih ne niti poverilnice spletnega mesta niti onemogočeno preverjanje.

GetStringAsync neuspešne statuse HTTP obravnava kot napake. Ne pretvarjajte neuspešnega prenosa v prazen HtmlDocument. Če aplikacija potrebuje glave, podrobnosti stanja ali telo napake, uporabite operacijo HTTP, usmerjeno v odgovor, in jo preglejte pred razčlenjevanjem.

Metoda niza se izogne brezpogojni dodatni pretvorbi surovih bajtov v UTF-8. Če bajte pridobivate namerno, zahteve glede kodiranja odgovora in dokumenta prenesite v dekodiranje.

LoadHtml ustvari razčlenjen dokument; ne izvaja skriptov, ne nalaga slogov in ne sledi povezavam. Naslednje relativne povezave razrešite glede na lokacijo odgovora in ne pozabite, da elementi, ki jih upodobi brskalnik, v prenesenem viru morda manjkajo. Vsak odgovor bi moral ustvariti svoj dokument, tudi ko si zahteve delijo isti konfigurirani odjemalec HTTP.

Sorodni članki