جلب HTML عبر وسيط قبل التحليل باستخدام Html Agility Pack
اجمع HttpClient مهيأ عبر وسيط مع Html Agility Pack مع إبقاء أخطاء الشبكة منفصلة عن تحليل HTML.
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 أن يحل محل الوسيط. استبدل الوجهة بشكل منفصل. يحتفظ عنوان الموقع بهويته في TLS. بيانات اعتماد الوسيط الموثّقة تنتمي إلى WebProxy؛ ولا بيانات اعتماد الموقع ولا التحقق المعطّل يحل محلها.
يعامل GetStringAsync حالات HTTP غير الناجحة كأخطاء. لا تحوّل تنزيلاً فاشلاً إلى HtmlDocument فارغ. إن احتاج التطبيق إلى ترويسات أو تفاصيل الحالة أو جسم خطأ، فاستخدم عملية HTTP موجهة للاستجابة وافحصها قبل التحليل.
تتجنب طريقة السلسلة تحويلاً إضافياً غير مشروط إلى UTF-8 للبايتات الخام. إذا جلبت البايتات عن قصد، فانقل متطلبات ترميز الاستجابة والمستند إلى فك الترميز.
ينتج LoadHtml مستنداً محللاً؛ وهو لا ينفّذ نصوصاً برمجية ولا يحمّل أنماطاً ولا يتبع الروابط. حلّ الروابط النسبية اللاحقة مقابل موقع الاستجابة، وتذكّر أن العناصر التي يعرضها المتصفح قد تكون غائبة عن المصدر المنزّل. ينبغي أن تنتج كل استجابة مستندها الخاص حتى عندما تشترك الطلبات في عميل HTTP المهيأ نفسه.