.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-ի հաճախորդի կյանքի տևողության ուղեցույցին և պահեք հաճախորդը/մշակիչը բեռնվածքի համար՝ ամեն հարցման ժամանակ կապերի ավազանները նորից ստեղծելու փոխարեն։ Ստուգեք վերադարձված կարգավիճակը․ աշխատող պրոքսի ուղին էլ կարող է փոխանցել կայքի մերժումը։