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 క్లయింట్‌ను పంచుకున్నప్పటికీ ప్రతి ప్రతిస్పందన తన స్వంత పత్రాన్ని ఉత్పత్తి చేయాలి.

సంబంధిత వ్యాసాలు