Skicka .NET HttpClient-begäranden genom en proxy
Konfigurera WebProxy på en HttpClientHandler och undvik avstängd proxyroutning eller koppling till fel klient.
Begäran måste använda den HttpClient som skapats med din proxyhanterare. Ett orelaterat WebProxy-objekt ändrar inte en annan klients rutt.
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());Ersätt dokumentationsadressen med en riktig HTTP-proxy från din tjänst eller HTTP-proxylistan. Denna toppnivåsyntax passar ett modernt C#-konsolprojekt; äldre projekt kan lägga satserna i en asynkron Main.
Kontrollera hanterarens båda egenskaper: Proxy väljer slutpunkten och UseProxy=true aktiverar användningen. Om slutpunkten fungerar separat men inte i programmet, säkerställ att ingen kod stänger av UseProxy och att anropet använder denna instans. Den särskilda hanteraren undviker beroende av processens eller operativsystemets upptäckt.
När proxyoperatören ger ett konto, tilldela en NetworkCredential till egenskapen WebProxy.Credentials. Webbplatsens Authorization gäller ett annat hopp, och en offentlig IP:port-post ger inga standardinloggningsuppgifter. En http://-lyssnare kan transportera HTTPS genom en tunnel; behåll normal destinationsverifiering.
Detta korta program frigör objekt när det avslutas. Vid upprepade tjänsteanrop ska du följa .NET-råden om klientlivslängd och behålla klient/hanterare för arbetsbelastningen i stället för att bygga om anslutningspoolerna per begäran. Granska returstatusen: en fungerande proxyväg kan fortfarande förmedla en avvisning från webbplatsen.