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

Ginagamit ng modernong .NET fragment na ito ang System.Net at System.Net.Http. Ang naka-configure na client ang humahawak ng routing ng network, at ang Html Agility Pack ang tumatanggap ng ibinalik na HTML string. Panatilihin ang angkop na naka-configure na client para sa patuloy na trabaho sa halip na muling buuin ang mga pool nito para sa bawat pahina.

Para sa halimbawang ito ng pampublikong pahina, ang isang hindi authenticated na kandidato mula sa listahan ng HTTP proxy ay maaaring pumalit sa tagapamagitan. Palitan nang hiwalay ang destinasyon. Pinapanatili ng URL ng website ang pagkakakilanlan nitong TLS. Ang mga authenticated na kredensyal ng proxy ay kabilang sa WebProxy; ni ang mga kredensyal ng website ni ang naka-disable na verification ay hindi pumapalit sa mga ito.

GetStringAsync tinatrato ang mga hindi matagumpay na HTTP status bilang mga error. Huwag gawing walang laman na HtmlDocument ang isang nabigong download. Kung kailangan ng application ang mga header, detalye ng status o body ng error, gumamit ng HTTP operation na nakatuon sa response at siyasatin ito bago i-parse.

Iniiwasan ng string method ang isang walang kondisyong karagdagang conversion sa UTF-8 ng mga raw byte. Kung sadyang kumukuha ka ng mga byte, dalhin ang mga kinakailangan sa encoding ng response at dokumento sa pag-decode.

LoadHtml gumagawa ng na-parse na dokumento; hindi ito nagpapatupad ng mga script, hindi naglo-load ng mga style at hindi sumusunod sa mga link. Lutasin ang mga kasunod na relative na link kaugnay ng lokasyon ng response, at tandaan na ang mga elementong na-render ng browser ay maaaring wala sa na-download na source. Dapat gumawa ng sariling dokumento ang bawat response kahit na nagbabahagi ang mga request ng parehong naka-configure na HTTP client.

Kaugnay na mga artikulo