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

Овој современ .NET фрагмент ги користи System.Net и System.Net.Http. Конфигурираниот клиент го управува мрежното насочување, а Html Agility Pack ја прима вратената HTML низа. Задржете соодветно конфигуриран клиент за тековна работа наместо да ги преизградувате неговите базени за секоја страница.

За овој пример со јавна страница, неавтентифициран кандидат од листата со HTTP проксија може да го замени посредникот. Заменете ја дестинацијата одделно. URL-то на веб-страницата ја задржува својата TLS идентичност. Автентифицираните прокси акредитиви припаѓаат на WebProxy; ниту акредитивите на веб-страницата, ниту оневозможената проверка не ги заменуваат.

GetStringAsync ги третира неуспешните HTTP статуси како грешки. Не претворајте неуспешно преземање во празен HtmlDocument. Ако апликацијата бара заглавија, детали за статусот или тело на грешка, користете HTTP операција ориентирана кон одговор и проверете ја пред парсирање.

Методот на низа избегнува безусловна дополнителна UTF-8 конверзија на сурови бајти. Ако намерно преземате бајти, пренесете ги барањата за кодирање на одговорот и документот во декодирањето.

LoadHtml создава парсиран документ; тој не извршува скрипти, не вчитува стилови и не следи врски. Решете ги следните релативни врски во однос на локацијата на одговорот и запомнете дека елементите што ги прикажува прелистувачот може да отсуствуваат во преземениот извор. Секој одговор треба да создаде свој документ дури и кога барањата делат исти конфигуриран HTTP клиент.

Поврзани статии