Slanje .NET HttpClient zahteva kroz proksi
Postavite WebProxy na HttpClientHandler i izbegnite isključeno proksi rutiranje ili vezivanje za pogrešnog klijenta.
Zahtev mora koristiti HttpClient napravljen s vašim proksi handlerom. Pravljenje nepovezanog WebProxy objekta ne menja rutu drugog klijenta.
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());Dokumentacijsku adresu zamenite stvarnim HTTP proksijem iz svoje usluge ili s liste HTTP proksija. Ova sintaksa najvišeg nivoa odgovara modernom C# konzolnom projektu; stariji projekti mogu staviti naredbe u asinhroni Main.
Proverite oba svojstva handlera: Proxy bira krajnju tačku, a UseProxy=true omogućava korišćenje. Ako tačka radi zasebno, ali ne u aplikaciji, potvrdite da kod ne isključuje UseProxy i da poziv koristi ovu instancu. Namenski handler uklanja zavisnost od otkrivanja kroz proces ili OS.
Kada operator proksija da nalog, dodelite NetworkCredential svojstvu WebProxy.Credentials. Authorization sajta pripada drugom koraku, a javni IP:port unos ne daje podrazumevane podatke za prijavu. Osluškivač http:// može prenositi HTTPS tunelom; zadržite uobičajenu proveru odredišta.
Ovaj kratki program oslobađa objekte pri izlasku. Za ponovljene pozive usluge pratite .NET smernice o životnom veku klijenta i zadržite klijenta i handler za opterećenje, umesto ponovne izgradnje bazena veza za svaki zahtev. Pregledajte vraćeni status: ispravna proksi ruta i dalje može preneti odbijanje sajta.