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

Dette moderne .NET-uddrag bruger System.Net og System.Net.Http. Den konfigurerede klient styrer netværksrouting, og Html Agility Pack modtager den returnerede HTML-streng. Behold en passende konfigureret klient til løbende arbejde i stedet for at genopbygge dens puljer for hver side.

Til dette eksempel med en offentlig side kan en uautentificeret kandidat fra HTTP-proxylisten erstatte mellemleddet. Udskift destinationen separat. Webstedets URL bevarer sin TLS-identitet. Autentificerede proxyoplysninger hører til på WebProxy; hverken webstedets oplysninger eller deaktiveret verifikation erstatter dem.

GetStringAsync behandler HTTP-statusser uden succes som fejl. Konverter ikke en mislykket download til et tomt HtmlDocument. Hvis programmet har brug for headere, statusdetaljer eller en fejltekst, så brug en responsorienteret HTTP-handling og undersøg den, før du parser.

Strengmetoden undgår en ubetinget ekstra UTF-8-konvertering af rå bytes. Hvis du bevidst henter bytes, så før kravene til svar- og dokumentkodning videre til afkodningen.

LoadHtml producerer et parset dokument; det kører ikke scripts, indlæser ikke styles og følger ikke links. Løs efterfølgende relative links i forhold til svarets placering, og husk, at browserrenderede elementer kan mangle i den downloadede kilde. Hvert svar bør producere sit eget dokument, selv når anmodninger deler den samme konfigurerede HTTP-klient.

Relaterede artikler