.NET HttpClient მოთხოვნების გაგზავნა პროქსით
დააყენეთ WebProxy HttpClientHandler-ზე და აირიდეთ გამორთული პროქსი-გზა ან მისი არასწორ კლიენტზე მიბმა.
მოთხოვნამ უნდა გამოიყენოს თქვენი პროქსი-დამმუშავებლით შექმნილი HttpClient. დაუკავშირებელი WebProxy ობიექტის შექმნა სხვა კლიენტის გზას არ ცვლის.
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());დოკუმენტაციის მისამართი შეცვალეთ თქვენი სერვისის ან HTTP პროქსების სიის რეალური HTTP პროქსით. ეს ზედა დონის სინტაქსი თანამედროვე C# კონსოლურ პროექტს შეესაბამება; ძველ პროექტებში ოპერატორები ასინქრონულ Main-ში შეიძლება მოთავსდეს.
შეამოწმეთ დამმუშავებლის ორივე თვისება: Proxy ბოლო წერტილს არჩევს, UseProxy=true მის გამოყენებას რთავს. თუ წერტილი ცალკე მუშაობს, აპლიკაციაში კი არა, დაადასტურეთ, რომ კოდი არ თიშავს UseProxy-ს და გამოძახება ამ ეგზემპლარს იყენებს. ცალკე დამმუშავებელი პროცესში ან ოპერაციულ სისტემაში პროქსის ავტომატურ აღმოჩენაზე დამოკიდებულებას გამორიცხავს.
როცა პროქსის ოპერატორი ანგარიშს მოგცემთ, მიანიჭეთ NetworkCredential თვისებას WebProxy.Credentials. საიტის Authorization სხვა მონაკვეთს ეკუთვნის, ხოლო საჯარო IP:port ჩანაწერი ნაგულისხმევ შესვლის მონაცემებს არ იძლევა. http:// მსმენელს შეუძლია HTTPS გვირაბით გადაიტანოს; შეინარჩუნეთ დანიშნულების ჩვეულებრივი შემოწმება.
ეს მოკლე პროგრამა დასრულებისას ობიექტებს ათავისუფლებს. განმეორებითი სერვისის გამოძახებებისთვის მიჰყევით .NET-ის კლიენტის სიცოცხლის ხანგრძლივობის მითითებებს და დატოვეთ კლიენტი/დამმუშავებელი დატვირთვისთვის, ნაცვლად ყოველი მოთხოვნისას კავშირების აუზების თავიდან შექმნისა. შეამოწმეთ დაბრუნებული სტატუსი: გამართულ პროქსი-გზასაც შეუძლია საიტის უარი გადმოიტანოს.