Sendi .NET HttpClient-petojn tra prokurilo
Agordu WebProxy ĉe HttpClientHandler kaj evitu malŝaltitan prokurilan vojigon aŭ ligon al la malĝusta kliento.
La peto devas uzi la HttpClient konstruitan kun via prokurila traktilo. Krei senrilatan WebProxy-objekton ne influas la vojon de alia kliento.
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());Anstataŭigu la dokumentan adreson per vera HTTP-prokurilo de via servo aŭ el la listo de HTTP-prokuriloj. Ĉi tiu supranivela sintakso taŭgas por moderna C#-konzolprojekto; pli malnovaj projektoj povas meti la instrukciojn en nesinkronan Main.
Kontrolu ambaŭ atributojn de la traktilo: Proxy elektas la finpunkton kaj UseProxy=true ebligas ĝian uzon. Se la finpunkto funkcias aparte sed ne en la aplikaĵo, konfirmu ke neniu kodo malŝaltas UseProxy kaj ke la alvoko uzas ĉi tiun instancon. La aparta traktilo evitas dependi de proceza aŭ operaciuma malkovro.
Kiam la prokurila administranto liveras konton, asignu NetworkCredential al la atributo WebProxy.Credentials. Authorization de la retejo servas alian salton, kaj publika IP:port-listero ne liveras defaŭltan ensaluton. Aŭskultanto http:// povas porti HTTPS per tunelo; konservu normalan celkontroladon.
Ĉi tiu mallonga programo liberigas objektojn ĉe eliro. Por ripetaj servalvokoj, sekvu la .NET-gvidadon pri klienta vivdaŭro kaj konservu la klienton/traktilon por la laborŝarĝo anstataŭ rekonstrui konektajn arojn por ĉiu peto. Inspektu la redonitan staton: funkcianta prokurila vojo ankoraŭ povas porti rifuzon de la retejo.