Inviare richieste .NET HttpClient attraverso un proxy
Configura WebProxy su un HttpClientHandler ed evita il routing proxy disattivato o associato al client sbagliato.
La richiesta deve usare il HttpClient creato con il gestore proxy. Creare un oggetto WebProxy indipendente non modifica il percorso di un altro 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());Sostituisci l’indirizzo di documentazione con un vero proxy HTTP del servizio o dell’elenco di proxy HTTP. Questa sintassi di primo livello è adatta a un moderno progetto console C#; i progetti meno recenti possono mettere le istruzioni in un Main asincrono.
Controlla entrambe le proprietà del gestore: Proxy seleziona l’endpoint e UseProxy=true ne abilita l’uso. Se l’endpoint funziona da solo ma non nell’applicazione, verifica che nessun codice disattivi UseProxy e che la chiamata usi questa istanza. Il gestore dedicato evita di dipendere dal rilevamento del processo o del sistema operativo.
Quando il gestore del proxy fornisce un account, assegna un NetworkCredential alla proprietà WebProxy.Credentials. L’Authorization del sito riguarda un altro passaggio, e una voce IP:port pubblica non fornisce credenziali predefinite. Un listener http:// può trasportare HTTPS tramite tunnel; mantieni la normale verifica della destinazione.
Questo breve programma rilascia gli oggetti all’uscita. Per chiamate di servizio ripetute, segui le indicazioni .NET sulla durata del client e conserva client/gestore per il carico, invece di ricostruire i pool di connessioni a ogni richiesta. Controlla lo stato restituito: un percorso proxy funzionante può comunque trasportare un rifiuto del sito.