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

Aquest fragment modern de .NET utilitza System.Net i System.Net.Http. El client configurat gestiona l'encaminament de xarxa i Html Agility Pack rep la cadena HTML retornada. Mantingueu un client configurat adequadament per a la feina continuada en lloc de reconstruir les seves agrupacions per a cada pàgina.

Per a aquest exemple de pàgina pública, un candidat no autenticat de la llista de proxies HTTP pot substituir l'intermediari. Substituïu la destinació per separat. L'URL del lloc conserva la seva identitat TLS. Les credencials de proxy autenticades pertanyen a WebProxy; ni les credencials del lloc ni la verificació desactivada les substitueixen.

GetStringAsync tracta els estats HTTP no reeixits com a errors. No convertiu una descàrrega fallida en un HtmlDocument buit. Si l'aplicació necessita capçaleres, detalls de l'estat o un cos d'error, feu servir una operació HTTP orientada a la resposta i examineu-la abans d'analitzar.

El mètode de cadena evita una conversió addicional incondicional a UTF-8 de bytes en brut. Si obteniu bytes deliberadament, porteu els requisits de codificació de la resposta i del document a la descodificació.

LoadHtml produeix un document analitzat; no executa scripts, no carrega estils ni segueix enllaços. Resoleu els enllaços relatius posteriors respecte a la ubicació de la resposta i recordeu que els elements renderitzats pel navegador poden faltar al codi font descarregat. Cada resposta hauria de produir el seu propi document encara que les peticions comparteixin el mateix client HTTP configurat.

Articles relacionats