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

Ez a modern .NET-töredék a System.Net és a System.Net.Http névtereket használja. A beállított ügyfél végzi a hálózati útválasztást, a Html Agility Pack pedig megkapja a visszaadott HTML-karakterláncot. Tartson fenn megfelelően beállított ügyfelet a folyamatos munkához ahelyett, hogy minden oldalhoz újraépítené a készleteit.

Ehhez a nyilvános oldalhoz tartozó példához egy hitelesítetlen jelölt az HTTP-proxy listáról helyettesítheti a közvetítőt. A célt külön cserélje ki. A webhely URL-je megőrzi TLS-identitását. A hitelesített proxy-hitelesítő adatok a WebProxyhoz tartoznak; sem a webhely hitelesítő adatai, sem a letiltott ellenőrzés nem helyettesíti őket.

A GetStringAsync a sikertelen HTTP-állapotokat hibaként kezeli. Ne alakítson egy sikertelen letöltést üres HtmlDocumentté. Ha az alkalmazásnak fejlécekre, állapotrészletekre vagy hibatestre van szüksége, használjon válaszorientált HTTP-műveletet, és az elemzés előtt vizsgálja meg.

A karakterlánc-metódus elkerüli a nyers bájtok feltétel nélküli további UTF-8-konverzióját. Ha szándékosan bájtokat kér le, vigye át a válasz és a dokumentum kódolási követelményeit a dekódolásba.

A LoadHtml elemzett dokumentumot állít elő; nem futtat szkripteket, nem tölt be stíluslapokat és nem követ hivatkozásokat. Oldja fel a további relatív hivatkozásokat a válasz helyéhez viszonyítva, és ne feledje, hogy a böngésző által megjelenített elemek hiányozhatnak a letöltött forrásból. Minden válasznak saját dokumentumot kell előállítania akkor is, ha a kérések ugyanazt a beállított HTTP-ügyfelet használják.

Kapcsolódó cikkek