إرسال طلبات .NET HttpClient عبر وكيل
اضبط WebProxy في HttpClientHandler وتجنب تعطيل توجيه الوكيل أو ربطه بالعميل الخطأ.
يجب أن يستخدم الطلب HttpClient المبني بمعالج الوكيل لديك. إنشاء كائن WebProxy غير مرتبط لا يؤثر في مسار عميل آخر.
using System;
using System.Net;
using System.Net.Http;
var proxy = new WebProxy("http://203.0.113.10:8080")
{
BypassProxyOnLocal = false
};
using var handler = new HttpClientHandler
{
Proxy = proxy,
UseProxy = true
};
using var client = new HttpClient(handler)
{
Timeout = TimeSpan.FromSeconds(15)
};
using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());استبدل العنوان التوثيقي بوكيل HTTP فعلي من خدمتك أو من قائمة وكلاء HTTP. تناسب صياغة المستوى الأعلى هذه مشروع وحدة تحكم C# حديثًا؛ ويمكن للمشاريع الأقدم وضع العبارات في Main غير متزامن.
تحقق من خاصيتي المعالج: تختار Proxy نقطة النهاية، وتفعّل UseProxy=true استخدامها. إذا عملت النقطة منفردة ولم تعمل في التطبيق، فتأكد من عدم وجود كود يعطّل UseProxy ومن أن الاستدعاء يستخدم هذه النسخة. يجنب المعالج المخصص الاعتماد على اكتشاف العملية أو نظام التشغيل.
عندما يوفر مشغّل الوكيل حسابًا، أسند NetworkCredential إلى الخاصية WebProxy.Credentials. تخص Authorization الخاصة بالموقع قفزة مختلفة، ولا يوفر مدخل IP:port عام بيانات دخول افتراضية. يستطيع مستمع http:// نقل HTTPS عبر نفق؛ أبقِ التحقق المعتاد من الوجهة.
يحرر هذا البرنامج القصير الكائنات عند الخروج. للاستدعاءات المتكررة، اتبع إرشادات .NET لعمر العميل واحتفظ بالعميل والمعالج لعبء العمل بدل إعادة إنشاء تجمعات الاتصال لكل طلب. افحص الحالة المعادة: قد ينقل مسار وكيل سليم رفضًا من الموقع أيضًا.