Send .NET HttpClient-forespørgsler gennem en proxy
Konfigurér WebProxy på en HttpClientHandler, og undgå deaktiveret proxyrouting eller tilknytning til den forkerte klient.
Forespørgslen skal bruge den HttpClient, der er oprettet med din proxyhandler. Et uvedkommende WebProxy-objekt ændrer ikke en anden klients rute.
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());Erstat dokumentationsadressen med en rigtig HTTP-proxy fra din tjeneste eller HTTP-proxylisten. Denne topniveausyntaks passer til et moderne C#-konsolprojekt; ældre projekter kan placere sætningerne i en asynkron Main.
Kontrollér begge handleregenskaber: Proxy vælger endepunktet, og UseProxy=true aktiverer brugen. Virker endepunktet separat, men ikke i programmet, skal du sikre, at ingen kode deaktiverer UseProxy, og at kaldet bruger denne instans. Den særlige handler undgår afhængighed af proces- eller OS-opdagelse.
Når proxyoperatøren giver en konto, skal du tildele en NetworkCredential til egenskaben WebProxy.Credentials. Webstedets Authorization gælder et andet hop, og en offentlig IP:port-post giver ingen standardloginoplysninger. En http://-lytter kan transportere HTTPS gennem en tunnel; behold normal destinationsverifikation.
Dette korte program frigiver objekter ved afslutning. Ved gentagne tjenestekald skal du følge .NET-vejledningen om klientlevetid og beholde klient/handler til arbejdsbelastningen frem for at genopbygge forbindelsespuljerne for hver forespørgsel. Undersøg den returnerede status: En fungerende proxyrute kan stadig transportere en afvisning fra webstedet.