.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 клиентінің өмір сүру мерзімі нұсқаулығын ұстанып, әр сұрауда қосылым пулдарын қайта құрмай, жүктемеге сай клиент/өңдегішті сақтаңыз. Қайтқан мәртебені тексеріңіз: дұрыс прокси жолы да сайттың бас тартуын жеткізе алады.