Cererea trebuie să folosească HttpClient creat cu handlerul tău de proxy. Crearea unui obiect WebProxy fără legătură nu schimbă ruta altui client.

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());

Înlocuiește adresa de documentație cu un proxy HTTP real din serviciul tău sau din lista de proxy-uri HTTP. Această sintaxă de nivel superior se potrivește unui proiect de consolă C# modern; proiectele vechi pot pune instrucțiunile într-un Main asincron.

Verifică ambele proprietăți ale handlerului: Proxy selectează punctul final și UseProxy=true îi activează folosirea. Dacă punctul funcționează separat, dar nu în aplicație, confirmă că niciun cod nu dezactivează UseProxy și apelul folosește această instanță. Handlerul dedicat evită dependența de descoperirea prin proces sau sistemul de operare.

Când operatorul oferă un cont, atribuie un NetworkCredential proprietății WebProxy.Credentials. Authorization a site-ului privește altă etapă, iar o intrare IP:port publică nu oferă date de conectare implicite. Un ascultător http:// poate transporta HTTPS prin tunel; păstrează verificarea normală a destinației.

Acest program scurt eliberează obiectele la ieșire. Pentru apeluri repetate, urmează ghidul .NET despre durata de viață a clientului și păstrează clientul/handlerul pentru sarcină, în loc să reconstruiești pool-urile de conexiuni la fiecare cerere. Inspectează starea returnată: o rută proxy funcțională poate totuși transporta un refuz al site-ului.

Articole similare