Send .NET HttpClient-forespørsler gjennom en proxy
Konfigurer WebProxy på en HttpClientHandler og unngå deaktivert proxyruting eller tilknytning til feil klient.
Forespørselen må bruke den HttpClient som er laget med proxyhandleren din. Et urelatert WebProxy-objekt endrer ikke ruten til en annen klient.
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());Erstatt dokumentasjonsadressen med en ekte HTTP-proxy fra tjenesten din eller HTTP-proxylisten. Denne toppnivåsyntaksen passer til et moderne C#-konsollprosjekt; eldre prosjekter kan legge setningene i en asynkron Main.
Kontroller begge handleregenskapene: Proxy velger endepunktet og UseProxy=true aktiverer bruken. Fungerer endepunktet separat, men ikke i programmet, bekreft at ingen kode deaktiverer UseProxy og at kallet bruker denne instansen. Den egne handleren unngår avhengighet av prosess- eller OS-oppdagelse.
Når proxyoperatøren gir en konto, tildel en NetworkCredential til egenskapen WebProxy.Credentials. Nettstedets Authorization gjelder et annet hopp, og en offentlig IP:port-oppføring gir ingen standard påloggingsopplysninger. En http://-lytter kan transportere HTTPS gjennom en tunnel; behold vanlig målverifisering.
Dette korte programmet frigjør objekter ved avslutning. Ved gjentatte tjenestekall skal du følge .NET-veiledningen om klientlevetid og beholde klient/handler for arbeidsmengden i stedet for å bygge tilkoblingspoolene på nytt per forespørsel. Kontroller returstatusen: En fungerende proxybane kan fortsatt formidle en avvisning fra nettstedet.