Enviar peticións de .NET HttpClient por un proxy
Configura WebProxy nun HttpClientHandler e evita o encamiñamento proxy desactivado ou a asociación ao cliente equivocado.
A petición debe usar o HttpClient creado co teu controlador de proxy. Crear un obxecto WebProxy independente non cambia a ruta doutro cliente.
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());Substitúe o enderezo de documentación por un proxy HTTP real do teu servizo ou da lista de proxies HTTP. Esta sintaxe de nivel superior serve para un proxecto de consola C# moderno; os proxectos antigos poden poñer as instrucións nun Main asíncrono.
Comproba as dúas propiedades do controlador: Proxy selecciona o extremo e UseProxy=true activa o seu uso. Se o extremo funciona por separado pero non na aplicación, confirma que ningún código desactive UseProxy e que a chamada use esta instancia. O controlador dedicado evita depender da detección do proceso ou do sistema operativo.
Cando o operador proporciona unha conta, asigna un NetworkCredential á propiedade WebProxy.Credentials. A Authorization do sitio corresponde a outro salto, e unha entrada IP:port pública non fornece credenciais predeterminadas. Un punto de escoita http:// pode transportar HTTPS por túnel; mantén a verificación normal do destino.
Este programa curto libera os obxectos ao saír. Para chamadas de servizo repetidas, segue as recomendacións .NET sobre a vida do cliente e conserva o cliente/controlador para a carga, en vez de reconstruír os pools de conexións en cada petición. Revisa o estado devolto: unha ruta proxy funcional aínda pode transportar un rexeitamento do sitio.