Слање .NET HttpClient захтева кроз прокси
Поставите WebProxy на HttpClientHandler и избегните искључено прокси рутирање или везивање за погрешног клијента.
Захтев мора користити HttpClient направљен с вашим прокси handler-ом. Прављење неповезаног 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.
Проверите оба својства handler-а: Proxy бира крајњу тачку, а UseProxy=true омогућава коришћење. Ако тачка ради засебно, али не у апликацији, потврдите да код не искључује UseProxy и да позив користи ову инстанцу. Наменски handler уклања зависност од откривања кроз процес или ОС.
Када оператор проксија да налог, доделите NetworkCredential својству WebProxy.Credentials. Authorization сајта припада другом кораку, а јавни IP:port унос не даје подразумеване податке за пријаву. Ослушкивач http:// може преносити HTTPS тунелом; задржите уобичајену проверу одредишта.
Овај кратки програм ослобађа објекте при изласку. За поновљене позиве услуге пратите .NET смернице о животном веку клијента и задржите клијента и handler за оптерећење, уместо поновне изградње базена веза за сваки захтев. Прегледајте враћени статус: исправна прокси рута и даље може пренети одбијање сајта.