Odesílání požadavků .NET HttpClient přes proxy
Nastavte WebProxy v HttpClientHandler a nenechte směrování proxy vypnuté nebo připojené k nesprávnému klientovi.
Požadavek musí používat HttpClient vytvořený s vaším handlerem proxy. Vytvoření nesouvisejícího objektu WebProxy neovlivní trasu jiného klienta.
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());Dokumentační adresu nahraďte skutečnou HTTP proxy ze své služby nebo ze seznamu HTTP proxy. Tato syntaxe nejvyšší úrovně se hodí pro moderní konzolový projekt C#; starší projekty mohou příkazy vložit do asynchronního Main.
Zkontrolujte obě vlastnosti handleru: Proxy volí koncový bod a UseProxy=true zapíná jeho použití. Pokud bod funguje samostatně, ale ne v aplikaci, ověřte, že žádný kód nevypíná UseProxy a volání používá tuto instanci. Vyhrazený handler odstraňuje závislost na zjišťování v procesu či operačním systému.
Když provozovatel proxy poskytne účet, přiřaďte NetworkCredential vlastnosti WebProxy.Credentials. Authorization webu patří jinému kroku a veřejná položka IP:port neposkytuje výchozí přihlašovací údaje. Listener http:// může přenášet HTTPS tunelem; zachovejte běžné ověřování cíle.
Tento krátký program uvolní objekty při ukončení. U opakovaných volání služby dodržujte pokyny .NET k životnosti klienta a ponechte klienta/handler pro danou zátěž místo obnovování fondů spojení při každém požadavku. Sledujte vrácený stav: funkční cesta proxy může stále přenést odmítnutí webu.