.NET HttpClient-verzoeken via een proxy versturen
Configureer WebProxy op een HttpClientHandler en voorkom uitgeschakelde proxyrouting of koppeling aan de verkeerde client.
Het verzoek moet de HttpClient gebruiken die met je proxyhandler is gemaakt. Een losstaand WebProxy-object aanmaken verandert de route van een andere client niet.
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());Vervang het documentatieadres door een echte HTTP-proxy van je dienst of uit de HTTP-proxylijst. Deze top-levelsyntaxis past bij een modern C#-consoleproject; oudere projecten kunnen de instructies in een asynchrone Main zetten.
Controleer beide handlereigenschappen: Proxy kiest het eindpunt en UseProxy=true schakelt het gebruik in. Werkt het eindpunt apart maar niet in de toepassing, controleer dan of geen code UseProxy uitschakelt en of de aanroep deze instantie gebruikt. De eigen handler voorkomt afhankelijkheid van detectie via proces of besturingssysteem.
Geeft de proxybeheerder een account, wijs dan een NetworkCredential toe aan de eigenschap WebProxy.Credentials. De Authorization van de website hoort bij een andere stap; een openbare IP:port-vermelding levert geen standaardlogin. Een http://-listener kan HTTPS tunnelen; behoud de normale verificatie van de bestemming.
Dit korte programma ruimt objecten bij afsluiten op. Volg voor herhaalde serviceaanroepen de .NET-richtlijnen voor de levensduur en behoud client/handler voor de werklast, in plaats van de verbindingspools per verzoek opnieuw op te bouwen. Bekijk de teruggegeven status: een werkende proxyroute kan nog steeds een weigering van de website doorgeven.